aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/lloverlaybar.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:45:04 -0500
committerJacek Antonelli2008-08-15 23:45:04 -0500
commit117e22047c5752352342d64e3fb7ce00a4eb8113 (patch)
treee32de2cfba0dda8705ae528fcd1fbe23ba075685 /linden/indra/newview/lloverlaybar.cpp
parentSecond Life viewer sources 1.18.0.6 (diff)
downloadmeta-impy-117e22047c5752352342d64e3fb7ce00a4eb8113.zip
meta-impy-117e22047c5752352342d64e3fb7ce00a4eb8113.tar.gz
meta-impy-117e22047c5752352342d64e3fb7ce00a4eb8113.tar.bz2
meta-impy-117e22047c5752352342d64e3fb7ce00a4eb8113.tar.xz
Second Life viewer sources 1.18.1.2
Diffstat (limited to 'linden/indra/newview/lloverlaybar.cpp')
-rw-r--r--linden/indra/newview/lloverlaybar.cpp453
1 files changed, 250 insertions, 203 deletions
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index 401cb02..f5addd0 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -34,24 +34,26 @@
34#include "lloverlaybar.h" 34#include "lloverlaybar.h"
35 35
36#include "audioengine.h" 36#include "audioengine.h"
37#include "llparcel.h"
38
39#include "llagent.h" 37#include "llagent.h"
40#include "llbutton.h" 38#include "llbutton.h"
41#include "llviewercontrol.h" 39#include "llfocusmgr.h"
42#include "llimview.h" 40#include "llimview.h"
43#include "lltextbox.h"
44#include "llvoavatar.h"
45#include "llmediaengine.h" 41#include "llmediaengine.h"
46#include "viewer.h" 42#include "llpanelaudiovolume.h"
43#include "llparcel.h"
44#include "lltextbox.h"
47#include "llui.h" 45#include "llui.h"
46#include "llviewercontrol.h"
47#include "llviewerimagelist.h"
48#include "llviewermenu.h" // handle_reset_view() 48#include "llviewermenu.h" // handle_reset_view()
49#include "llviewerparcelmgr.h" 49#include "llviewerparcelmgr.h"
50#include "llwebbrowserctrl.h"
51#include "llvieweruictrlfactory.h" 50#include "llvieweruictrlfactory.h"
52#include "llviewerimagelist.h"
53#include "llviewerwindow.h" 51#include "llviewerwindow.h"
54#include "llfocusmgr.h" 52#include "llvoiceclient.h"
53#include "llvoavatar.h"
54#include "llvoiceremotectrl.h"
55#include "llwebbrowserctrl.h"
56#include "viewer.h"
55 57
56// 58//
57// Globals 59// Globals
@@ -67,38 +69,54 @@ extern S32 MENU_BAR_HEIGHT;
67 69
68 70
69//static 71//static
70void* LLOverlayBar::createMediaRemote(void* userdata) 72void* LLOverlayBar::createMasterRemote(void* userdata)
71{ 73{
72 74 LLOverlayBar *self = (LLOverlayBar*)userdata;
73 LLOverlayBar *self = (LLOverlayBar*)userdata; 75 self->mMasterRemote = new LLMediaRemoteCtrl ( "master_volume",
76 "volume",
77 LLRect(),
78 "panel_master_volume.xml");
79 return self->mMasterRemote;
80}
74 81
75 82void* LLOverlayBar::createMediaRemote(void* userdata)
83{
84 LLOverlayBar *self = (LLOverlayBar*)userdata;
76 self->mMediaRemote = new LLMediaRemoteCtrl ( "media_remote", 85 self->mMediaRemote = new LLMediaRemoteCtrl ( "media_remote",
77 "media", 86 "media",
78 LLRect(), 87 LLRect(),
79 "panel_media_remote.xml"); 88 "panel_media_remote.xml");
80 return self->mMediaRemote; 89 return self->mMediaRemote;
81} 90}
82 91
83
84
85void* LLOverlayBar::createMusicRemote(void* userdata) 92void* LLOverlayBar::createMusicRemote(void* userdata)
86{ 93{
87
88 LLOverlayBar *self = (LLOverlayBar*)userdata; 94 LLOverlayBar *self = (LLOverlayBar*)userdata;
89
90 self->mMusicRemote = new LLMediaRemoteCtrl ( "music_remote", 95 self->mMusicRemote = new LLMediaRemoteCtrl ( "music_remote",
91 "music", 96 "music",
92 LLRect(), 97 LLRect(),
93 "panel_music_remote.xml" ); 98 "panel_music_remote.xml" );
94 return self->mMusicRemote; 99 return self->mMusicRemote;
95} 100}
96 101
102void* LLOverlayBar::createVoiceRemote(void* userdata)
103{
104 LLOverlayBar *self = (LLOverlayBar*)userdata;
105 self->mVoiceRemote = new LLVoiceRemoteCtrl("voice_remote");
106 return self->mVoiceRemote;
107}
108
97 109
98 110
99 111
100LLOverlayBar::LLOverlayBar(const std::string& name, const LLRect& rect) 112LLOverlayBar::LLOverlayBar(const std::string& name, const LLRect& rect)
101: LLPanel(name, rect, FALSE) // not bordered 113 : LLPanel(name, rect, FALSE), // not bordered
114 mMasterRemote(NULL),
115 mMusicRemote(NULL),
116 mMediaRemote(NULL),
117 mVoiceRemote(NULL),
118 mMediaState(STOPPED),
119 mMusicState(STOPPED)
102{ 120{
103 setMouseOpaque(FALSE); 121 setMouseOpaque(FALSE);
104 setIsChrome(TRUE); 122 setIsChrome(TRUE);
@@ -106,8 +124,10 @@ LLOverlayBar::LLOverlayBar(const std::string& name, const LLRect& rect)
106 isBuilt = FALSE; 124 isBuilt = FALSE;
107 125
108 LLCallbackMap::map_t factory_map; 126 LLCallbackMap::map_t factory_map;
127 factory_map["master_volume"] = LLCallbackMap(LLOverlayBar::createMasterRemote, this);
109 factory_map["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this); 128 factory_map["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this);
110 factory_map["music_remote"] = LLCallbackMap(LLOverlayBar::createMusicRemote, this); 129 factory_map["music_remote"] = LLCallbackMap(LLOverlayBar::createMusicRemote, this);
130 factory_map["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this);
111 131
112 gUICtrlFactory->buildPanel(this, "panel_overlaybar.xml", &factory_map); 132 gUICtrlFactory->buildPanel(this, "panel_overlaybar.xml", &factory_map);
113 133
@@ -117,30 +137,17 @@ LLOverlayBar::LLOverlayBar(const std::string& name, const LLRect& rect)
117 childSetAction("Mouselook",onClickMouselook,this); 137 childSetAction("Mouselook",onClickMouselook,this);
118 childSetAction("Stand Up",onClickStandUp,this); 138 childSetAction("Stand Up",onClickStandUp,this);
119 139
120 mMusicRemote->addObserver ( this );
121
122 if ( gAudiop )
123 {
124 mMusicRemote->setVolume ( gSavedSettings.getF32 ( "AudioLevelMusic" ) );
125 mMusicRemote->setTransportState ( LLMediaRemoteCtrl::Stop, FALSE );
126 };
127
128 mIsFocusRoot = TRUE; 140 mIsFocusRoot = TRUE;
129
130 mMediaRemote->addObserver ( this );
131 mMediaRemote->setVolume ( gSavedSettings.getF32 ( "MediaAudioVolume" ) );
132
133 isBuilt = true; 141 isBuilt = true;
134 142
143 // make overlay bar conform to window size
144 setRect(rect);
135 layoutButtons(); 145 layoutButtons();
136} 146}
137 147
138LLOverlayBar::~LLOverlayBar() 148LLOverlayBar::~LLOverlayBar()
139{ 149{
140 // LLView destructor cleans up children 150 // LLView destructor cleans up children
141
142 mMusicRemote->remObserver ( this );
143 mMediaRemote->remObserver ( this );
144} 151}
145 152
146EWidgetType LLOverlayBar::getWidgetType() const 153EWidgetType LLOverlayBar::getWidgetType() const
@@ -164,20 +171,28 @@ void LLOverlayBar::reshape(S32 width, S32 height, BOOL called_from_parent)
164 } 171 }
165} 172}
166 173
167
168void LLOverlayBar::layoutButtons() 174void LLOverlayBar::layoutButtons()
169{ 175{
170 S32 width = mRect.getWidth(); 176 S32 width = mRect.getWidth();
171 if (width > 800) width = 800; 177 if (width > 1024) width = 1024;
172 178
173 S32 count = getChildCount(); 179 S32 count = getChildCount();
174 const S32 PAD = gSavedSettings.getS32("StatusBarPad"); 180 const S32 PAD = gSavedSettings.getS32("StatusBarPad");
175 181
176 F32 segment_width = (F32)(width) / (F32)count; 182 const S32 num_media_controls = 3;
183 S32 media_remote_width = mMediaRemote ? mMediaRemote->getRect().getWidth() : 0;
184 S32 music_remote_width = mMusicRemote ? mMusicRemote->getRect().getWidth() : 0;
185 S32 voice_remote_width = mVoiceRemote ? mVoiceRemote->getRect().getWidth() : 0;
186 S32 master_remote_width = mMasterRemote ? mMasterRemote->getRect().getWidth() : 0;
177 187
178 S32 btn_width = lltrunc(segment_width - PAD); 188 // total reserved width for all media remotes
189 const S32 ENDPAD = 20;
190 S32 remote_total_width = media_remote_width + PAD + music_remote_width + PAD + voice_remote_width + PAD + master_remote_width + ENDPAD;
179 191
180 S32 remote_width = mMusicRemote->getRect().getWidth(); 192 // calculate button widths
193 F32 segment_width = (F32)(width - remote_total_width) / (F32)(count - num_media_controls);
194
195 S32 btn_width = lltrunc(segment_width - PAD);
181 196
182 // Evenly space all views 197 // Evenly space all views
183 LLRect r; 198 LLRect r;
@@ -187,22 +202,47 @@ void LLOverlayBar::layoutButtons()
187 { 202 {
188 LLView *view = *child_iter; 203 LLView *view = *child_iter;
189 r = view->getRect(); 204 r = view->getRect();
190 r.mLeft = (width) - llround((i+1)*segment_width); 205 r.mLeft = (width) - llround(remote_total_width + (i-num_media_controls+1)*segment_width);
191 r.mRight = r.mLeft + btn_width; 206 r.mRight = r.mLeft + btn_width;
192 view->setRect(r); 207 view->setRect(r);
193 i++; 208 i++;
194 } 209 }
195 210
196 // Fix up remotes to have constant width because they can't shrink 211 // Fix up remotes to have constant width because they can't shrink
197 r = mMusicRemote->getRect(); 212 S32 right = mRect.getWidth() - remote_total_width - PAD;
198 r.mRight = r.mLeft + remote_width; 213 if (mMediaRemote)
199 mMusicRemote->setRect(r); 214 {
200 215 r = mMediaRemote->getRect();
201 r = mMediaRemote->getRect(); 216 r.mLeft = right + PAD;
202 r.mLeft = mMusicRemote->getRect().mRight + PAD; 217 right = r.mLeft + media_remote_width;
203 r.mRight = r.mLeft + remote_width; 218 r.mRight = right;
204 mMediaRemote->setRect(r); 219 mMediaRemote->setRect(r);
205 220 }
221 if (mMusicRemote)
222 {
223 r = mMusicRemote->getRect();
224 r.mLeft = right + PAD;
225 right = r.mLeft + music_remote_width;
226 r.mRight = right;
227 mMusicRemote->setRect(r);
228 }
229 if (mVoiceRemote)
230 {
231 r = mVoiceRemote->getRect();
232 r.mLeft = right + PAD;
233 right = r.mLeft + voice_remote_width;
234 r.mRight = right;
235 mVoiceRemote->setRect(r);
236 }
237 if (mMasterRemote)
238 {
239 r = mMasterRemote->getRect();
240 r.mLeft = right + PAD;
241 right = r.mLeft + master_remote_width;
242 r.mRight = right;
243 mMasterRemote->setRect(r);
244 }
245
206 updateRect(); 246 updateRect();
207} 247}
208 248
@@ -282,7 +322,7 @@ void LLOverlayBar::draw()
282// Per-frame updates of visibility 322// Per-frame updates of visibility
283void LLOverlayBar::refresh() 323void LLOverlayBar::refresh()
284{ 324{
285 BOOL im_received = gIMView->getIMReceived(); 325 BOOL im_received = gIMMgr->getIMReceived();
286 childSetVisible("IM Received", im_received); 326 childSetVisible("IM Received", im_received);
287 childSetEnabled("IM Received", im_received); 327 childSetEnabled("IM Received", im_received);
288 328
@@ -313,10 +353,10 @@ void LLOverlayBar::refresh()
313 353
314 } 354 }
315 355
316 if ( gAudiop ) 356 if ( mMusicRemote && gAudiop )
317 { 357 {
318 LLParcel* parcel = gParcelMgr->getAgentParcel(); 358 LLParcel* parcel = gParcelMgr->getAgentParcel();
319 if (!parcel 359 if (!parcel
320 || !parcel->getMusicURL() 360 || !parcel->getMusicURL()
321 || !parcel->getMusicURL()[0] 361 || !parcel->getMusicURL()[0]
322 || !gSavedSettings.getBOOL("AudioStreamingMusic")) 362 || !gSavedSettings.getBOOL("AudioStreamingMusic"))
@@ -332,50 +372,29 @@ void LLOverlayBar::refresh()
332 } 372 }
333 373
334 // if there is a url and a texture and media is enabled and available and media streaming is on... (phew!) 374 // if there is a url and a texture and media is enabled and available and media streaming is on... (phew!)
335 if ( LLMediaEngine::getInstance () && 375 if ( mMediaRemote )
336 LLMediaEngine::getInstance ()->getUrl ().length () &&
337 LLMediaEngine::getInstance ()->getImageUUID ().notNull () &&
338 LLMediaEngine::getInstance ()->isEnabled () &&
339 LLMediaEngine::getInstance ()->isAvailable () &&
340 gSavedSettings.getBOOL ( "AudioStreamingVideo" ) )
341 { 376 {
342 // display remote control 377 if (LLMediaEngine::getInstance () &&
343 mMediaRemote->setVisible ( TRUE ); 378 LLMediaEngine::getInstance ()->getUrl ().length () &&
344 mMediaRemote->setEnabled ( TRUE ); 379 LLMediaEngine::getInstance ()->getImageUUID ().notNull () &&
345 380 LLMediaEngine::getInstance ()->isEnabled () &&
346 if ( LLMediaEngine::getInstance ()->getMediaRenderer () ) 381 LLMediaEngine::getInstance ()->isAvailable () &&
382 gSavedSettings.getBOOL ( "AudioStreamingVideo" ) )
347 { 383 {
348 if ( LLMediaEngine::getInstance ()->getMediaRenderer ()->isPlaying () || 384 // display remote control
349 LLMediaEngine::getInstance ()->getMediaRenderer ()->isLooping () ) 385 mMediaRemote->setVisible ( TRUE );
350 { 386 mMediaRemote->setEnabled ( TRUE );
351 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Pause, TRUE ); 387 }
352 } 388 else
353 else 389 {
354 if ( LLMediaEngine::getInstance ()->getMediaRenderer ()->isPaused () ) 390 mMediaRemote->setVisible ( FALSE );
355 { 391 mMediaRemote->setEnabled ( FALSE );
356 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Play, TRUE ); 392 }
357 }
358 else
359 {
360 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Stop, TRUE );
361 };
362 };
363 } 393 }
364 else 394 if (mVoiceRemote)
365 { 395 {
366 mMediaRemote->setVisible ( FALSE ); 396 mVoiceRemote->setVisible(LLVoiceClient::voiceEnabled());
367 mMediaRemote->setEnabled ( FALSE ); 397 }
368 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Stop, TRUE );
369 };
370
371 BOOL any_button = (childIsVisible("IM Received")
372 || childIsVisible("Set Not Busy")
373 || childIsVisible("Release Keys")
374 || childIsVisible("Mouselook")
375 || childIsVisible("Stand Up")
376 || mMusicRemote->getVisible()
377 || mMediaRemote->getVisible() );
378
379 398
380 // turn off the whole bar in mouselook 399 // turn off the whole bar in mouselook
381 if (gAgent.cameraMouselook()) 400 if (gAgent.cameraMouselook())
@@ -384,8 +403,8 @@ void LLOverlayBar::refresh()
384 } 403 }
385 else 404 else
386 { 405 {
387 setVisible(any_button); 406 setVisible(TRUE);
388 }; 407 }
389} 408}
390 409
391//----------------------------------------------------------------------- 410//-----------------------------------------------------------------------
@@ -395,7 +414,7 @@ void LLOverlayBar::refresh()
395// static 414// static
396void LLOverlayBar::onClickIMReceived(void*) 415void LLOverlayBar::onClickIMReceived(void*)
397{ 416{
398 gIMView->setFloaterOpen(TRUE); 417 gIMMgr->setFloaterOpen(TRUE);
399} 418}
400 419
401 420
@@ -431,134 +450,162 @@ void LLOverlayBar::onClickStandUp(void*)
431} 450}
432 451
433//////////////////////////////////////////////////////////////////////////////// 452////////////////////////////////////////////////////////////////////////////////
434// 453// static media helpers
435// 454// *TODO: Move this into an audio manager abstraction
436void
437LLOverlayBar::
438onVolumeChange ( const LLMediaRemoteCtrlObserver::EventType& eventIn )
439{
440 LLUICtrl* control = eventIn.getControl ();
441 F32 value = eventIn.getValue ();
442 455
443 if ( control == mMusicRemote ) 456//static
457void LLOverlayBar::mediaPlay(void*)
458{
459 if (!gOverlayBar)
444 { 460 {
445 if (gAudiop) 461 return;
446 {
447 gAudiop->setInternetStreamGain ( value );
448 };
449 gSavedSettings.setF32 ( "AudioLevelMusic", value );
450 } 462 }
451 else 463 gOverlayBar->mMediaState = PLAYING; // desired state
452 if ( control == mMediaRemote ) 464 LLParcel* parcel = gParcelMgr->getAgentParcel();
465 if (parcel)
453 { 466 {
454 LLMediaEngine::getInstance ()->setVolume ( value ); 467 LLString path("");
455 gSavedSettings.setF32 ( "MediaAudioVolume", value ); 468 LLMediaEngine::getInstance()->convertImageAndLoadUrl( true, false, path );
456 469 }
457 };
458} 470}
459 471//static
460//////////////////////////////////////////////////////////////////////////////// 472void LLOverlayBar::mediaPause(void*)
461//
462//
463void
464LLOverlayBar::
465onStopButtonPressed ( const LLMediaRemoteCtrlObserver::EventType& eventIn )
466{ 473{
467 LLUICtrl* control = eventIn.getControl (); 474 if (!gOverlayBar)
468
469 if ( control == mMusicRemote )
470 { 475 {
471 if ( gAudiop ) 476 return;
472 {
473 gAudiop->stopInternetStream ();
474 };
475 mMusicRemote->setTransportState ( LLMediaRemoteCtrl::Stop, FALSE );
476 } 477 }
477 else 478 gOverlayBar->mMediaState = PAUSED; // desired state
478 if ( control == mMediaRemote ) 479 LLMediaEngine::getInstance()->pause();
480}
481//static
482void LLOverlayBar::mediaStop(void*)
483{
484 if (!gOverlayBar)
479 { 485 {
480 LLMediaEngine::getInstance ()->stop (); 486 return;
481 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Stop, TRUE ); 487 }
482 }; 488 gOverlayBar->mMediaState = STOPPED; // desired state
489 LLMediaEngine::getInstance()->stop();
483} 490}
484 491
485//////////////////////////////////////////////////////////////////////////////// 492//static
486// 493void LLOverlayBar::musicPlay(void*)
487//
488void LLOverlayBar::onPlayButtonPressed( const LLMediaRemoteCtrlObserver::EventType& eventIn )
489{ 494{
490 LLUICtrl* control = eventIn.getControl (); 495 if (!gOverlayBar)
491
492 LLParcel* parcel = gParcelMgr->getAgentParcel();
493 if ( control == mMusicRemote )
494 { 496 {
495 if (gAudiop) 497 return;
498 }
499 gOverlayBar->mMusicState = PLAYING; // desired state
500 if (gAudiop)
501 {
502 LLParcel* parcel = gParcelMgr->getAgentParcel();
503 if ( parcel )
496 { 504 {
497 if ( parcel ) 505 // this doesn't work properly when crossing parcel boundaries - even when the
506 // stream is stopped, it doesn't return the right thing - commenting out for now.
507// if ( gAudiop->isInternetStreamPlaying() == 0 )
498 { 508 {
499 // this doesn't work properly when crossing parcel boundaries - even when the 509 gAudiop->startInternetStream(parcel->getMusicURL());
500 // stream is stopped, it doesn't return the right thing - commenting out for now.
501 //if ( gAudiop->isInternetStreamPlaying() == 0 )
502 //{
503 const char* music_url = parcel->getMusicURL();
504
505 gAudiop->startInternetStream(music_url);
506
507 mMusicRemote->setTransportState ( LLMediaRemoteCtrl::Play, FALSE );
508 //}
509 } 510 }
510 }; 511 }
511
512 // CP: this is the old way of doing things (click play each time on a parcel to start stream)
513 //if (gAudiop)
514 //{
515 // if (gAudiop->isInternetStreamPlaying() > 0)
516 // {
517 // gAudiop->pauseInternetStream ( 0 );
518 // }
519 // else
520 // {
521 // if (parcel)
522 // {
523 // const char* music_url = parcel->getMusicURL();
524 // gAudiop->startInternetStream(music_url);
525 // }
526 // }
527 //};
528 //mMusicRemote->setTransportState ( LLMediaRemoteCtrl::Stop, FALSE );
529 } 512 }
530 else 513}
531 if ( control == mMediaRemote ) 514//static
515void LLOverlayBar::musicPause(void*)
516{
517 if (!gOverlayBar)
532 { 518 {
533 LLParcel* parcel = gParcelMgr->getAgentParcel(); 519 return;
534 if (parcel) 520 }
521 gOverlayBar->mMusicState = PAUSED; // desired state
522 if (gAudiop)
523 {
524 gAudiop->pauseInternetStream(1);
525 }
526}
527//static
528void LLOverlayBar::musicStop(void*)
529{
530 if (!gOverlayBar)
531 {
532 return;
533 }
534 gOverlayBar->mMusicState = STOPPED; // desired state
535 if (gAudiop)
536 {
537 gAudiop->stopInternetStream();
538 }
539}
540
541//static
542void LLOverlayBar::enableMusicButtons(LLPanel* panel)
543{
544 BOOL play_enabled = FALSE;
545 BOOL play_visible = TRUE;
546 BOOL pause_visible = FALSE;
547 BOOL stop_enabled = FALSE;
548 if ( gAudiop && gOverlayBar && gSavedSettings.getBOOL("AudioStreamingMusic"))
549 {
550 play_enabled = TRUE;
551 S32 is_playing = gAudiop->isInternetStreamPlaying();
552 if (is_playing == 1)
535 { 553 {
536 LLString path( "" ); 554 play_visible = FALSE;
537 LLMediaEngine::getInstance ()->convertImageAndLoadUrl( true, false, path ); 555 pause_visible = TRUE;
538 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Play, TRUE ); 556 stop_enabled = TRUE;
539 } 557 }
540 }; 558 else if (is_playing == 2)
559 {
560 play_visible = TRUE;
561 pause_visible = FALSE;
562 stop_enabled = TRUE;
563 }
564 }
565 panel->childSetEnabled("music_play", play_enabled);
566 panel->childSetEnabled("music_pause", play_enabled);
567 panel->childSetVisible("music_play", play_visible);
568 panel->childSetVisible("music_pause", pause_visible);
569 panel->childSetEnabled("music_stop", stop_enabled);
541} 570}
542 571
543//////////////////////////////////////////////////////////////////////////////// 572//static
544// 573void LLOverlayBar::enableMediaButtons(LLPanel* panel)
545//
546void LLOverlayBar::onPauseButtonPressed( const LLMediaRemoteCtrlObserver::EventType& eventIn )
547{ 574{
548 LLUICtrl* control = eventIn.getControl (); 575 // Media
576 BOOL play_enabled = FALSE;
577 BOOL play_visible = TRUE;
578 BOOL pause_visible = FALSE;
579 BOOL stop_enabled = FALSE;
549 580
550 if ( control == mMusicRemote ) 581 if ( LLMediaEngine::getInstance() && gOverlayBar && gSavedSettings.getBOOL("AudioStreamingVideo") )
551 { 582 {
552 if (gAudiop) 583 play_enabled = TRUE;
584 if (LLMediaEngine::getInstance()->getMediaRenderer())
553 { 585 {
554 gAudiop->pauseInternetStream ( 1 ); 586 if ( LLMediaEngine::getInstance()->getMediaRenderer()->isPlaying() ||
555 }; 587 LLMediaEngine::getInstance()->getMediaRenderer()->isLooping() )
556 mMusicRemote->setTransportState ( LLMediaRemoteCtrl::Play, FALSE ); 588 {
589 play_visible = FALSE;
590 pause_visible = TRUE;
591 stop_enabled = TRUE;
592 }
593 else if ( LLMediaEngine::getInstance()->getMediaRenderer()->isPaused() )
594 {
595 play_visible = TRUE;
596 pause_visible = FALSE;
597 stop_enabled = TRUE;
598 }
599 }
557 } 600 }
558 else 601 panel->childSetEnabled("media_play", play_enabled);
559 if ( control == mMediaRemote ) 602 panel->childSetEnabled("media_pause", play_enabled);
560 { 603 panel->childSetVisible("media_play", play_visible);
561 LLMediaEngine::getInstance ()->pause (); 604 panel->childSetVisible("media_pause", pause_visible);
562 mMediaRemote->setTransportState ( LLMediaRemoteCtrl::Pause, TRUE ); 605 panel->childSetEnabled("media_stop", stop_enabled);
563 }; 606}
607
608void LLOverlayBar::toggleAudioVolumeFloater(void* user_data)
609{
610 LLFloaterAudioVolume::toggleInstance(LLSD());
564} 611}