summaryrefslogtreecommitdiff
path: root/indra/newview/llviewercontrol.h
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2009-05-08 07:43:08 +0000
committerSteven Bennetts <steve@lindenlab.com>2009-05-08 07:43:08 +0000
commita4000c3744e42fcbb638e742f3b63fa31a0dee15 (patch)
tree7f472c30e65bbfa04ee9bc06631a1af305cc31fb /indra/newview/llviewercontrol.h
parent6c4cadbb04d633ad7b762058bdeba6e1f650dafd (diff)
merge trunk@116587 skinning-7@119389 -> viewer-2.0.0-skinning-7
Diffstat (limited to 'indra/newview/llviewercontrol.h')
-rw-r--r--indra/newview/llviewercontrol.h116
1 files changed, 2 insertions, 114 deletions
diff --git a/indra/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h
index d0dc80cb9a..3271e5fe9b 100644
--- a/indra/newview/llviewercontrol.h
+++ b/indra/newview/llviewercontrol.h
@@ -47,17 +47,14 @@ extern BOOL gHackGodmode;
//setting variables are declared in this function
void settings_setup_listeners();
-extern std::map<std::string, LLControlGroup*> gSettings;
-
// for the graphics settings
void create_graphics_group(LLControlGroup& group);
// saved at end of session
extern LLControlGroup gSavedSettings;
+extern LLControlGroup gSavedSkinSettings;
extern LLControlGroup gSavedPerAccountSettings;
-
-// Read-only
-extern LLControlGroup gColors;
+extern LLControlGroup gWarningSettings;
// Saved at end of session
extern LLControlGroup gCrashSettings;
@@ -66,114 +63,5 @@ extern LLControlGroup gCrashSettings;
extern std::string gLastRunVersion;
extern std::string gCurrentVersion;
-//! Helper function for LLCachedControl
-template <class T>
-eControlType get_control_type(const T& in, LLSD& out)
-{
- llerrs << "Usupported control type: " << typeid(T).name() << "." << llendl;
- return TYPE_COUNT;
-}
-
-//! Publish/Subscribe object to interact with LLControlGroups.
-
-//! An LLCachedControl instance to connect to a LLControlVariable
-//! without have to manually create and bind a listener to a local
-//! object.
-template <class T>
-class LLCachedControl
-{
- T mCachedValue;
- LLPointer<LLControlVariable> mControl;
- boost::signals::connection mConnection;
-
-public:
- LLCachedControl(const std::string& name,
- const T& default_value,
- const std::string& comment = "Declared In Code")
- {
- mControl = gSavedSettings.getControl(name);
- if(mControl.isNull())
- {
- declareTypedControl(gSavedSettings, name, default_value, comment);
- mControl = gSavedSettings.getControl(name);
- if(mControl.isNull())
- {
- llerrs << "The control could not be created!!!" << llendl;
- }
-
- mCachedValue = default_value;
- }
- else
- {
- mCachedValue = (const T&)mControl->getValue();
- }
-
- // Add a listener to the controls signal...
- mControl->getSignal()->connect(
- boost::bind(&LLCachedControl<T>::handleValueChange, this, _1)
- );
- }
-
- ~LLCachedControl()
- {
- if(mConnection.connected())
- {
- mConnection.disconnect();
- }
- }
-
- LLCachedControl& operator =(const T& newvalue)
- {
- setTypeValue(*mControl, newvalue);
- }
-
- operator const T&() { return mCachedValue; }
-
-private:
- void declareTypedControl(LLControlGroup& group,
- const std::string& name,
- const T& default_value,
- const std::string& comment)
- {
- LLSD init_value;
- eControlType type = get_control_type<T>(default_value, init_value);
- if(type < TYPE_COUNT)
- {
- group.declareControl(name, type, init_value, comment, FALSE);
- }
- }
-
- bool handleValueChange(const LLSD& newvalue)
- {
- mCachedValue = (const T &)newvalue;
- return true;
- }
-
- void setTypeValue(LLControlVariable& c, const T& v)
- {
- // Implicit conversion from T to LLSD...
- c.set(v);
- }
-};
-
-template <> eControlType get_control_type<U32>(const U32& in, LLSD& out);
-template <> eControlType get_control_type<S32>(const S32& in, LLSD& out);
-template <> eControlType get_control_type<F32>(const F32& in, LLSD& out);
-template <> eControlType get_control_type<bool> (const bool& in, LLSD& out);
-// Yay BOOL, its really an S32.
-//template <> eControlType get_control_type<BOOL> (const BOOL& in, LLSD& out)
-template <> eControlType get_control_type<std::string>(const std::string& in, LLSD& out);
-template <> eControlType get_control_type<LLVector3>(const LLVector3& in, LLSD& out);
-template <> eControlType get_control_type<LLVector3d>(const LLVector3d& in, LLSD& out);
-template <> eControlType get_control_type<LLRect>(const LLRect& in, LLSD& out);
-template <> eControlType get_control_type<LLColor4>(const LLColor4& in, LLSD& out);
-template <> eControlType get_control_type<LLColor3>(const LLColor3& in, LLSD& out);
-template <> eControlType get_control_type<LLColor4U>(const LLColor4U& in, LLSD& out);
-template <> eControlType get_control_type<LLSD>(const LLSD& in, LLSD& out);
-
-//#define TEST_CACHED_CONTROL 1
-#ifdef TEST_CACHED_CONTROL
-void test_cached_control();
-#endif // TEST_CACHED_CONTROL
#endif // LL_LLVIEWERCONTROL_H