diff options
Diffstat (limited to 'indra/newview/llviewercontrol.h')
-rw-r--r-- | indra/newview/llviewercontrol.h | 112 |
1 files changed, 2 insertions, 110 deletions
diff --git a/indra/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h index c4003111d3..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,110 +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::signals2::scoped_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... - mConnection = mControl->getSignal()->connect( - boost::bind(&LLCachedControl<T>::handleValueChange, this, _1) - ); - } - - ~LLCachedControl() - { - } - - 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 |