summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiao Li <angela@lindenlab.com>2009-10-13 15:34:31 +0000
committerJiao Li <angela@lindenlab.com>2009-10-13 15:34:31 +0000
commit25f3546626a9912c30e34913c6fda1719edf80ff (patch)
treeab1f29f427cf4b9365a908128b9cfe2aea66045c
parent536a0aa13b1b055c8bb6ab9d0df8befd639058d5 (diff)
Reset Current URL -- to be reviewed
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.cpp61
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.h4
-rw-r--r--indra/newview/skins/default/xui/en/panel_media_settings_general.xml2
3 files changed, 54 insertions, 13 deletions
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
index 295415cb2d..3177ef9a21 100644
--- a/indra/newview/llpanelmediasettingsgeneral.cpp
+++ b/indra/newview/llpanelmediasettingsgeneral.cpp
@@ -38,6 +38,7 @@
#include "llspinctrl.h"
#include "lluictrlfactory.h"
#include "llviewerwindow.h"
+#include "llviewermedia.h"
#include "llsdutil.h"
#include "llselectmgr.h"
#include "llbutton.h"
@@ -66,11 +67,12 @@ LLPanelMediaSettingsGeneral::LLPanelMediaSettingsGeneral() :
mHomeURL( NULL ),
mCurrentURL( NULL ),
mAltImageEnable( NULL ),
- mParent( NULL )
+ mParent( NULL ),
+ mMediaEditable(false)
{
// build dialog from XML
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_general.xml");
- mCommitCallbackRegistrar.add("Media.ResetCurrentUrl", boost::bind(&LLPanelMediaSettingsGeneral::onBtnResetCurrentUrl, this));
+// mCommitCallbackRegistrar.add("Media.ResetCurrentUrl", boost::bind(&LLPanelMediaSettingsGeneral::onBtnResetCurrentUrl, this));
// mCommitCallbackRegistrar.add("Media.CommitHomeURL", boost::bind(&LLPanelMediaSettingsGeneral::onCommitHomeURL, this));
}
@@ -95,7 +97,7 @@ BOOL LLPanelMediaSettingsGeneral::postBuild()
// watch commit action for HOME URL
childSetCommitCallback( LLMediaEntry::HOME_URL_KEY, onCommitHomeURL, this);
-
+ childSetCommitCallback( "current_url_reset_btn",onBtnResetCurrentUrl, this);
// interrogates controls and updates widgets as required
updateMediaPreview();
updateCurrentURL();
@@ -161,7 +163,7 @@ void LLPanelMediaSettingsGeneral::draw()
// enable/disable RESRET button depending on permissions
// since this is the same as a navigate action
- bool user_can_press_reset = gFloaterTools->selectedMediaEditable();
+ bool user_can_press_reset = mMediaEditable;
// several places modify this widget so we must collect states in one place
if ( reset_button_is_active )
@@ -219,6 +221,7 @@ void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable)
void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_settings ,bool editable)
{
LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata;
+ self->mMediaEditable = editable;
//llinfos << "---------------" << llendl;
//llinfos << ll_pretty_print_sd(media_settings) << llendl;
@@ -229,7 +232,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_
{
if(LLFloaterMediaSettings::getInstance()->mMultipleMedia)
{
- self->clearValues(self, editable);
+ self->clearValues(self, self->mMediaEditable);
// only show multiple
self->mHomeURL ->setText(LLTrans::getString("Multiple Media"));
return;
@@ -240,7 +243,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_
{
if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)
{
- self->clearValues(self, editable);
+ self->clearValues(self, self->mMediaEditable);
// only show multiple
self->mHomeURL ->setText(LLTrans::getString("Multiple Media"));
return;
@@ -297,7 +300,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_
static_cast< LLSpinCtrl* >( data_set[ i ].ctrl_ptr )->
setValue( media_settings[ base_key ].asInteger() );
- data_set[ i ].ctrl_ptr->setEnabled(editable);
+ data_set[ i ].ctrl_ptr->setEnabled(self->mMediaEditable);
data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
};
};
@@ -353,12 +356,12 @@ void LLPanelMediaSettingsGeneral::onCommitHomeURL( LLUICtrl* ctrl, void *userdat
self->updateMediaPreview();
}
-
////////////////////////////////////////////////////////////////////////////////
-void LLPanelMediaSettingsGeneral::onBtnResetCurrentUrl()
+// static
+void LLPanelMediaSettingsGeneral::onBtnResetCurrentUrl(LLUICtrl* ctrl, void *userdata)
{
- // TODO: reset home URL but need to consider permissions too
- //LLPanelMediaSettingsGeneral* self =(LLPanelMediaSettingsGeneral *)userdata;
+ LLPanelMediaSettingsGeneral* self =(LLPanelMediaSettingsGeneral *)userdata;
+ self->navigateHomeSelectedFace();
}
////////////////////////////////////////////////////////////////////////////////
@@ -399,3 +402,39 @@ void LLPanelMediaSettingsGeneral::setParent( LLFloaterMediaSettings* parent )
{
mParent = parent;
};
+
+bool LLPanelMediaSettingsGeneral::navigateHomeSelectedFace()
+{
+ // HACK: This is directly referencing an impl name. BAD!
+ // This can be removed when we have a truly generic media browser that only
+ // builds an impl based on the type of url it is passed.
+ struct functor_navigate_media : public LLSelectedTEGetFunctor< bool>
+ {
+ bool get( LLViewerObject* object, S32 face )
+ {
+ if ( object )
+ if ( object->getTE(face) )
+ if ( object->getTE(face)->getMediaData() )
+ {
+ if(object->permModify())
+ {
+ viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(object->getTE(face)->getMediaData()->getMediaID());
+ if(media_impl)
+ {
+ media_impl->navigateHome();
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ } functor_navigate_media;
+
+ bool all_face_media_navigated = false;
+ LLObjectSelectionHandle selected_objects =LLSelectMgr::getInstance()->getSelection();
+ selected_objects->getSelectedTEValue( &functor_navigate_media, all_face_media_navigated );
+
+ return all_face_media_navigated;
+}
+
diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h
index 5acfa39181..1b60909786 100644
--- a/indra/newview/llpanelmediasettingsgeneral.h
+++ b/indra/newview/llpanelmediasettingsgeneral.h
@@ -61,14 +61,16 @@ public:
static void initValues( void* userdata, const LLSD& media_settings ,bool editable);
static void clearValues( void* userdata, bool editable);
+ bool navigateHomeSelectedFace();
void updateMediaPreview();
void updateCurrentURL();
protected:
LLFloaterMediaSettings* mParent;
+ bool mMediaEditable;
private:
- void onBtnResetCurrentUrl();
+ static void onBtnResetCurrentUrl(LLUICtrl* ctrl, void *userdata);
static void onCommitHomeURL(LLUICtrl* ctrl, void *userdata );
LLComboBox* mControls;
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
index cb7a473c9a..a56f1cf8fe 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
@@ -196,7 +196,7 @@
left="30"
width="340"
enabled="false"
- name="meida_setting_note">
+ name="media_setting_note">
Note: Residents can override this setting
</text>