2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (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
8 // http://floralicense.org/license/
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.
18 * @file VpSoundPathPopup.cpp
19 * @brief This is the implementation file for SoundPathPopup class.
22 #include "VpSoundPathPopup.h"
24 #include "VpVideoPlayerForm.h"
26 using namespace Tizen::App;
27 using namespace Tizen::Base;
28 using namespace Tizen::Base::Collection;
29 using namespace Tizen::Base::Runtime;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Media;
32 using namespace Tizen::Ui;
33 using namespace Tizen::Ui::Controls;
35 static const int W_SOUNDPATH_POPUP = 550;
36 static const int H_SOUNDPATH_POPUP = 450;
38 static const int X_CHECK_BUTTON_1ST = 0;
39 static const int Y_CHECK_BUTTON_1ST = 0;
40 static const int W_CHECK_BUTTON_1ST = 510;
41 static const int H_CHECK_BUTTON_1ST = 90;
43 static const int X_CHECK_BUTTON_2ND = 0;
44 static const int Y_CHECK_BUTTON_2ND = 90;
45 static const int W_CHECK_BUTTON_2ND = 510;
46 static const int H_CHECK_BUTTON_2ND = 90;
48 static const int X_CLOSE_BUTTON = 65;
49 static const int Y_CLOSE_BUTTON = 210;
50 static const int W_CLOSE_BUTTON = 400;
51 static const int H_CLOSE_BUTTON = 90;
53 static const RequestId REQUEST_UPDATE_WIRED_ACCESSORY_AND_SPEAKER_MENU = 111;
54 static const RequestId REQUEST_UPDATE_BLUETOOTHA2DP_AND_SPEAKER_MENU = 112;
55 static const RequestId REQUEST_UPDATE_BLUETOOTHA2DP_AND_WIRED_ACCESSORY_MENU = 113;
57 SoundPathPopup::SoundPathPopup(void)
58 : __pCloseButton(null)
59 , __pCheckButton1st(null)
60 , __pCheckButton2nd(null)
65 SoundPathPopup::~SoundPathPopup(void)
70 SoundPathPopup::Construct(int currentOutputDevice, String bluetoothA2dpName, int audioRouteMode)
73 OutputAudioDevice tempAudioDevice;
75 String checkBoxString;
77 AppResource* pAppResource = Application::GetInstance()->GetAppResource();
79 r = Popup::Construct(true, Dimension(W_SOUNDPATH_POPUP, H_SOUNDPATH_POPUP));
80 TryCatch(r == E_SUCCESS, , "Popup::Construct() Failed:%s", GetErrorMessage(r));
82 __pCheckButton1st = new (std::nothrow) CheckButton();
83 __pCheckButton2nd = new (std::nothrow) CheckButton();
84 __pCloseButton = new (std::nothrow) Button();
86 r = pAppResource->GetString(IDS_COM_HEADER_AUDIO_DEVICE_ABB, checkBoxString);
87 TryCatch(r == E_SUCCESS, , "pAppResource->GetString Failed:%s", GetErrorMessage(r));
89 r = SetTitleText(checkBoxString);
90 TryCatch(r == E_SUCCESS, , "SetTitleText() Failed:%s", GetErrorMessage(r));
92 tempAudioDevice = static_cast<OutputAudioDevice>(currentOutputDevice);
94 switch (audioRouteMode)
96 case AUDIO_ROUTE_BT_A2DP_AND_SPEAKER:
98 r = __pCheckButton1st->Construct(
99 Rectangle(X_CHECK_BUTTON_1ST, Y_CHECK_BUTTON_1ST, W_CHECK_BUTTON_1ST, H_CHECK_BUTTON_1ST),
100 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, bluetoothA2dpName);
101 TryCatch(r == E_SUCCESS, , "__pCheckButton1st->Construct() Failed:%s", GetErrorMessage(r));
103 r = pAppResource->GetString(IDS_COM_OPT_SPEAKER_ABB, checkBoxString);
104 TryCatch(r == E_SUCCESS, , "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
106 r = __pCheckButton2nd->Construct(
107 Rectangle(X_CHECK_BUTTON_2ND, Y_CHECK_BUTTON_2ND, W_CHECK_BUTTON_2ND, H_CHECK_BUTTON_2ND),
108 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, checkBoxString);
109 TryCatch(r == E_SUCCESS, , "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
111 if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_BT_A2DP)
113 __pCheckButton1st->SetSelected(true);
114 __pCheckButton2nd->SetSelected(false);
116 else if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_SPEAKER)
118 __pCheckButton1st->SetSelected(false);
119 __pCheckButton2nd->SetSelected(true);
121 __audioRouteMode = audioRouteMode;
125 case AUDIO_ROUTE_WIRED_ACCESSORY_AND_SPEAKER:
127 r = pAppResource->GetString(IDS_COM_OPT_HEADPHONES_ABB, checkBoxString);
128 TryCatch(r == E_SUCCESS, , "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
130 r = __pCheckButton1st->Construct(
131 Rectangle(X_CHECK_BUTTON_1ST, Y_CHECK_BUTTON_1ST, W_CHECK_BUTTON_1ST, H_CHECK_BUTTON_1ST),
132 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, checkBoxString);
133 TryCatch(r == E_SUCCESS, , "__pCheckButton1st->Construct() Failed:%s", GetErrorMessage(r));
135 r = pAppResource->GetString(IDS_COM_OPT_SPEAKER_ABB, checkBoxString);
136 TryCatch(r == E_SUCCESS, , "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
138 r = __pCheckButton2nd->Construct(
139 Rectangle(X_CHECK_BUTTON_2ND, Y_CHECK_BUTTON_2ND, W_CHECK_BUTTON_2ND, H_CHECK_BUTTON_2ND),
140 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, checkBoxString);
141 TryCatch(r == E_SUCCESS, , "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
143 if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY)
145 __pCheckButton1st->SetSelected(true);
146 __pCheckButton2nd->SetSelected(false);
148 else if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_SPEAKER)
150 __pCheckButton1st->SetSelected(false);
151 __pCheckButton2nd->SetSelected(true);
153 __audioRouteMode = audioRouteMode;
157 case AUDIO_ROUTE_BT_A2DP_AND_WIRED_ACCESSORY:
159 r = __pCheckButton1st->Construct(
160 Rectangle(X_CHECK_BUTTON_1ST, Y_CHECK_BUTTON_1ST, W_CHECK_BUTTON_1ST, H_CHECK_BUTTON_1ST),
161 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, bluetoothA2dpName);
162 TryCatch(r == E_SUCCESS, , "__pCheckButton1st->Construct() Failed:%s", GetErrorMessage(r));
164 r = pAppResource->GetString(IDS_COM_OPT_HEADPHONES_ABB, checkBoxString);
165 TryCatch(r == E_SUCCESS, , "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
167 r = __pCheckButton2nd->Construct(
168 Rectangle(X_CHECK_BUTTON_2ND, Y_CHECK_BUTTON_2ND, W_CHECK_BUTTON_2ND, H_CHECK_BUTTON_2ND),
169 CHECK_BUTTON_STYLE_ONOFF, BACKGROUND_STYLE_DEFAULT, false, checkBoxString);
170 TryCatch(r == E_SUCCESS, , "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
172 if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_BT_A2DP)
174 __pCheckButton1st->SetSelected(true);
175 __pCheckButton2nd->SetSelected(false);
177 else if (tempAudioDevice == OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY)
179 __pCheckButton1st->SetSelected(false);
180 __pCheckButton2nd->SetSelected(true);
182 __audioRouteMode = audioRouteMode;
190 r = pAppResource->GetString(IDS_COM_POP_CLOSE, checkBoxString);
191 TryCatch(r == E_SUCCESS, , "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
193 r = __pCloseButton->Construct(
194 Rectangle(X_CLOSE_BUTTON, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), checkBoxString);
195 TryCatch(r == E_SUCCESS, , "__pCloseButton->Construct() Failed:%s", GetErrorMessage(r));
197 __pCheckButton1st->SetActionId(IDA_BUTTON_CHECK1ST_CHECKED, IDA_BUTTON_CHECK1ST_UNCHECKED);
198 __pCheckButton2nd->SetActionId(IDA_BUTTON_CHECK2ND_CHECKED, IDA_BUTTON_CHECK2ND_UNCHECKED);
199 __pCloseButton->SetActionId(IDA_BUTTON_CLOSE);
201 __pCheckButton1st->AddActionEventListener(*this);
202 __pCheckButton2nd->AddActionEventListener(*this);
203 __pCloseButton->AddActionEventListener(*this);
205 r = AddControl(*__pCheckButton1st);
206 TryCatch(r == E_SUCCESS, , "AddControl(*__pCheckButton1st) Failed:%s", GetErrorMessage(r));
208 r = AddControl(*__pCheckButton2nd);
209 TryCatch(r == E_SUCCESS, , "AddControl(*__pCheckButton2nd) Failed:%s", GetErrorMessage(r));
211 r = AddControl(*__pCloseButton);
212 TryCatch(r == E_SUCCESS, , "AddControl(*__CloseButton) Failed:%s", GetErrorMessage(r));
217 delete __pCheckButton1st;
218 __pCheckButton1st = null;
220 delete __pCheckButton2nd;
221 __pCheckButton2nd = null;
223 delete __pCloseButton;
224 __pCloseButton = null;
230 SoundPathPopup::OnActionPerformed(const Control& source, int actionId)
232 result r = E_FAILURE;
233 Frame* pFrame = null;
234 VideoPlayerForm* mainForm = null;
236 AudioRouteInfo currentAudioRoute(INPUT_AUDIO_DEVICE_NONE, OUTPUT_AUDIO_DEVICE_NONE);
237 AudioRouteInfo audioRouteSpeaker(INPUT_AUDIO_DEVICE_NONE, OUTPUT_AUDIO_DEVICE_SPEAKER);
238 AudioRouteInfo audioRouteWiredAccessory(INPUT_AUDIO_DEVICE_NONE, OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY);
239 AudioRouteInfo audioRouteBluetooth(INPUT_AUDIO_DEVICE_NONE, OUTPUT_AUDIO_DEVICE_BT_A2DP);
241 pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
242 mainForm = static_cast<VideoPlayerForm*>(pFrame->GetCurrentForm());
246 case IDA_BUTTON_CHECK1ST_CHECKED:
248 case IDA_BUTTON_CHECK1ST_UNCHECKED:
250 if (__audioRouteMode == AUDIO_ROUTE_SPEAKER_ONLY)
252 AppLogDebug("AUDIO_ROUTE_SPEAKER_ONLY");
254 else if (__audioRouteMode == AUDIO_ROUTE_BT_A2DP_AND_SPEAKER)
256 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_BT_A2DP)
258 r = mainForm->SetActiveAudioRoute(audioRouteBluetooth);
259 TryReturnVoid(r == E_SUCCESS, "__pAudioRouteManager->SetActiveAudioRoute() failed:%s",
263 else if (__audioRouteMode == AUDIO_ROUTE_WIRED_ACCESSORY_AND_SPEAKER)
265 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY)
267 r = mainForm->SetActiveAudioRoute(audioRouteWiredAccessory);
268 TryReturnVoid(r == E_SUCCESS, "__pAudioRouteManager->SetActiveAudioRoute() failed:%s",
274 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_BT_A2DP)
276 r = mainForm->SetActiveAudioRoute(audioRouteBluetooth);
277 TryReturnVoid(r == E_SUCCESS, "__pAudioRouteManager->SetActiveAudioRoute() failed:%s",
282 __pCheckButton1st->SetSelected(true);
283 __pCheckButton2nd->SetSelected(false);
289 case IDA_BUTTON_CHECK2ND_CHECKED:
291 case IDA_BUTTON_CHECK2ND_UNCHECKED:
293 if (__audioRouteMode == AUDIO_ROUTE_SPEAKER_ONLY)
295 AppLogDebug("AUDIO_ROUTE_SPEAKER_ONLY");
297 else if (__audioRouteMode == AUDIO_ROUTE_BT_A2DP_AND_SPEAKER)
299 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_SPEAKER)
301 r = mainForm->SetActiveAudioRoute(audioRouteSpeaker);
302 TryReturnVoid(r == E_SUCCESS, "mainForm->SetActiveAudioRoute() failed:%s",
306 else if (__audioRouteMode == AUDIO_ROUTE_WIRED_ACCESSORY_AND_SPEAKER)
308 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_SPEAKER)
310 r = mainForm->SetActiveAudioRoute(audioRouteSpeaker);
311 TryReturnVoid(r == E_SUCCESS, "mainForm->SetActiveAudioRoute() failed:%s",
317 if (currentAudioRoute.GetOutputAudioDevice() != OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY)
319 r = mainForm->SetActiveAudioRoute(audioRouteWiredAccessory);
320 TryReturnVoid(r == E_SUCCESS, "__pAudioRouteManager->SetActiveAudioRoute() failed:%s",
325 __pCheckButton1st->SetSelected(false);
326 __pCheckButton2nd->SetSelected(true);
332 case IDA_BUTTON_CLOSE:
334 r = SetShowState(false);
335 TryReturnVoid(r == E_SUCCESS, "SetShowState() failed:%s", GetErrorMessage(r));
345 SoundPathPopup::ShowPopup(bool state)
347 result r = E_FAILURE;
349 r = SetShowState(state);
350 TryReturnVoid(r == E_SUCCESS, "SetShowState() failed:%s", GetErrorMessage(r));
353 TryReturnVoid(r == E_SUCCESS, "Show() failed:%s", GetErrorMessage(r));
357 SoundPathPopup::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
359 result r = E_FAILURE;
360 int currentAudioDevice = 0;
361 String checkBoxString;
362 String* bluetoothA2dpName = null;
363 Integer* tempAudioRouteMode = null;
364 Integer* currentOutputAudioDevice = null;
366 AppResource* pAppResource = Application::GetInstance()->GetAppResource();
370 case REQUEST_UPDATE_WIRED_ACCESSORY_AND_SPEAKER_MENU:
372 r = pAppResource->GetString(IDS_COM_OPT_HEADPHONES_ABB, checkBoxString);
373 TryReturnVoid(r == E_SUCCESS, "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
375 __pCheckButton1st->SetText(checkBoxString);
377 r = pAppResource->GetString(IDS_COM_OPT_SPEAKER_ABB, checkBoxString);
378 TryReturnVoid(r == E_SUCCESS, "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
380 __pCheckButton2nd->SetText(checkBoxString);
381 TryReturnVoid(r == E_SUCCESS, "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
383 tempAudioRouteMode = static_cast<Integer*>(pArgs->GetAt(0));
384 __audioRouteMode = tempAudioRouteMode->value;
386 currentOutputAudioDevice = static_cast<Integer*>(pArgs->GetAt(1));
387 currentAudioDevice = currentOutputAudioDevice->value;
389 if (currentAudioDevice == OUTPUT_AUDIO_DEVICE_WIRED_ACCESSORY)
391 __pCheckButton1st->SetSelected(true);
392 __pCheckButton2nd->SetSelected(false);
394 else if (currentAudioDevice == OUTPUT_AUDIO_DEVICE_SPEAKER)
396 __pCheckButton1st->SetSelected(false);
397 __pCheckButton2nd->SetSelected(true);
400 if (GetShowState() == true)
407 case REQUEST_UPDATE_BLUETOOTHA2DP_AND_SPEAKER_MENU:
409 bluetoothA2dpName = static_cast<String*>(pArgs->GetAt(0));
411 __pCheckButton1st->SetText(*bluetoothA2dpName);
413 r = pAppResource->GetString(IDS_COM_OPT_SPEAKER_ABB, checkBoxString);
414 TryReturnVoid(r == E_SUCCESS, "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
416 __pCheckButton2nd->SetText(checkBoxString);
417 TryReturnVoid(r == E_SUCCESS, "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
419 __pCheckButton1st->SetSelected(true);
420 __pCheckButton2nd->SetSelected(false);
422 tempAudioRouteMode = static_cast<Integer*>(pArgs->GetAt(1));
423 __audioRouteMode = tempAudioRouteMode->value;
425 if (GetShowState() == true)
432 case REQUEST_UPDATE_BLUETOOTHA2DP_AND_WIRED_ACCESSORY_MENU:
434 bluetoothA2dpName = static_cast<String*>(pArgs->GetAt(0));
436 __pCheckButton1st->SetText(*bluetoothA2dpName);
438 r = pAppResource->GetString(IDS_COM_OPT_HEADPHONES_ABB, checkBoxString);
439 TryReturnVoid(r == E_SUCCESS, "pAppResource->GetString() Failed:%s", GetErrorMessage(r));
441 __pCheckButton2nd->SetText(checkBoxString);
442 TryReturnVoid(r == E_SUCCESS, "__pCheckButton2nd->Construct() Failed:%s", GetErrorMessage(r));
444 __pCheckButton1st->SetSelected(false);
445 __pCheckButton2nd->SetSelected(true);
447 if (GetShowState() == true)