/indra/newview/llfloaterpreference.h
C Header | 260 lines | 158 code | 47 blank | 55 comment | 0 complexity | ba8c3048c12efd0e4088c22480d72478 MD5 | raw file
Possible License(s): LGPL-2.1
- /**
- * @file llfloaterpreference.h
- * @brief LLPreferenceCore class definition
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
- /*
- * App-wide preferences. Note that these are not per-user,
- * because we need to load many preferences before we have
- * a login name.
- */
- #ifndef LL_LLFLOATERPREFERENCE_H
- #define LL_LLFLOATERPREFERENCE_H
- #include "llfloater.h"
- #include "llavatarpropertiesprocessor.h"
- class LLPanelPreference;
- class LLPanelLCD;
- class LLPanelDebug;
- class LLMessageSystem;
- class LLScrollListCtrl;
- class LLSliderCtrl;
- class LLSD;
- class LLTextBox;
- typedef enum
- {
- GS_LOW_GRAPHICS,
- GS_MID_GRAPHICS,
- GS_HIGH_GRAPHICS,
- GS_ULTRA_GRAPHICS
-
- } EGraphicsSettings;
- // Floater to control preferences (display, audio, bandwidth, general.
- class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver
- {
- public:
- LLFloaterPreference(const LLSD& key);
- ~LLFloaterPreference();
- void apply();
- void cancel();
- /*virtual*/ void draw();
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void onClose(bool app_quitting);
- // static data update, called from message handler
- static void updateUserInfo(const std::string& visibility, bool im_via_email, const std::string& email);
- // refresh all the graphics preferences menus
- static void refreshEnabledGraphics();
-
- // translate user's busy response message according to current locale if message is default, otherwise do nothing
- static void initBusyResponse();
- void processProperties( void* pData, EAvatarProcessorType type );
- void processProfileProperties(const LLAvatarData* pAvatarData );
- void storeAvatarProperties( const LLAvatarData* pAvatarData );
- void saveAvatarProperties( void );
- protected:
- void onBtnOK();
- void onBtnCancel();
- void onBtnApply();
- void onClickClearCache(); // Clear viewer texture cache, vfs, and VO cache on next startup
- void onClickBrowserClearCache(); // Clear web history and caches as well as viewer caches above
- void onLanguageChange();
- void onNameTagOpacityChange(const LLSD& newvalue);
- // set value of "BusyResponseChanged" in account settings depending on whether busy response
- // string differs from default after user changes.
- void onBusyResponseChanged();
- // if the custom settings box is clicked
- void onChangeCustom();
- void updateMeterText(LLUICtrl* ctrl);
- void onOpenHardwareSettings();
- // callback for defaults
- void setHardwareDefaults();
- // callback for when client turns on shaders
- void onVertexShaderEnable();
- // callback for commit in the "Single click on land" and "Double click on land" comboboxes.
- void onClickActionChange();
- // updates click/double-click action settings depending on controls values
- void updateClickActionSettings();
- // updates click/double-click action controls depending on values from settings.xml
- void updateClickActionControls();
-
- // This function squirrels away the current values of the controls so that
- // cancel() can restore them.
- void saveSettings();
-
- public:
- void setCacheLocation(const LLStringExplicit& location);
- void onClickSetCache();
- void onClickResetCache();
- void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata);
- void onSelectSkin();
- void onClickSetKey();
- void setKey(KEY key);
- void onClickSetMiddleMouse();
- void onClickSetSounds();
- // void onClickSkipDialogs();
- // void onClickResetDialogs();
- void onClickEnablePopup();
- void onClickDisablePopup();
- void resetAllIgnored();
- void setAllIgnored();
- void onClickLogPath();
- void enableHistory();
- void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email);
- void refreshEnabledState();
- void disableUnavailableSettings();
- void onCommitWindowedMode();
- void refresh(); // Refresh enable/disable
- // if the quality radio buttons are changed
- void onChangeQuality(const LLSD& data);
-
- void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
- void onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name);
- // void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator);
- void onCommitParcelMediaAutoPlayEnable();
- void onCommitMediaEnabled();
- void onCommitMusicEnabled();
- void applyResolution();
- void onChangeMaturity();
- void onClickBlockList();
- void onClickProxySettings();
- void onClickTranslationSettings();
- void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
- void getUIColor(LLUICtrl* ctrl, const LLSD& param);
-
- void buildPopupLists();
- static void refreshSkin(void* data);
- private:
- static std::string sSkin;
- bool mClickActionDirty; ///< Set to true when the click/double-click options get changed by user.
- bool mGotPersonalInfo;
- bool mOriginalIMViaEmail;
- bool mLanguageChanged;
- bool mAvatarDataInitialized;
-
- bool mOriginalHideOnlineStatus;
- std::string mDirectoryVisibility;
-
- LLAvatarData mAvatarProperties;
- };
- class LLPanelPreference : public LLPanel
- {
- public:
- LLPanelPreference();
- /*virtual*/ BOOL postBuild();
-
- virtual ~LLPanelPreference();
- virtual void apply();
- virtual void cancel();
- void setControlFalse(const LLSD& user_data);
- virtual void setHardwareDefaults(){};
- // Disables "Allow Media to auto play" check box only when both
- // "Streaming Music" and "Media" are unchecked. Otherwise enables it.
- void updateMediaAutoPlayCheckbox(LLUICtrl* ctrl);
- // This function squirrels away the current values of the controls so that
- // cancel() can restore them.
- virtual void saveSettings();
-
- class Updater;
- private:
- //for "Only friends and groups can call or IM me"
- static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&);
- //for "Show my Favorite Landmarks at Login"
- static void showFavoritesOnLoginWarning(LLUICtrl* checkbox, const LLSD& value);
- typedef std::map<LLControlVariable*, LLSD> control_values_map_t;
- control_values_map_t mSavedValues;
- typedef std::map<std::string, LLColor4> string_color_map_t;
- string_color_map_t mSavedColors;
- Updater* mBandWidthUpdater;
- };
- class LLPanelPreferenceGraphics : public LLPanelPreference
- {
- public:
- BOOL postBuild();
- void draw();
- void apply();
- void cancel();
- void saveSettings();
- void setHardwareDefaults();
- protected:
- bool hasDirtyChilds();
- void resetDirtyChilds();
-
- };
- class LLFloaterPreferenceProxy : public LLFloater
- {
- public:
- LLFloaterPreferenceProxy(const LLSD& key);
- ~LLFloaterPreferenceProxy();
- /// show off our menu
- static void show();
- void cancel();
-
- protected:
- BOOL postBuild();
- void onOpen(const LLSD& key);
- void onClose(bool app_quitting);
- void saveSettings();
- void onBtnOk();
- void onBtnCancel();
- void onChangeSocksSettings();
- private:
-
- bool mSocksSettingsDirty;
- typedef std::map<LLControlVariable*, LLSD> control_values_map_t;
- control_values_map_t mSavedValues;
- };
- #endif // LL_LLPREFERENCEFLOATER_H