diff options
Diffstat (limited to 'indra/newview/llfloaterpreference.h')
-rw-r--r-- | indra/newview/llfloaterpreference.h | 808 |
1 files changed, 404 insertions, 404 deletions
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 1a4e156a87..c8b98d8e1b 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -1,404 +1,404 @@ -/**
- * @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"
-#include "llconversationlog.h"
-#include "llsearcheditor.h"
-#include "llsetkeybinddialog.h"
-#include "llkeyconflict.h"
-
-class LLConversationLogObserver;
-class LLPanelPreference;
-class LLPanelLCD;
-class LLPanelDebug;
-class LLMessageSystem;
-class LLComboBox;
-class LLScrollListCtrl;
-class LLScrollListCell;
-class LLSliderCtrl;
-class LLSD;
-class LLTextBox;
-
-namespace ll
-{
- namespace prefs
- {
- struct SearchData;
- }
-}
-
-typedef std::map<std::string, std::string> notifications_map;
-
-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 LLConversationLogObserver
-{
-public:
- LLFloaterPreference(const LLSD& key);
- ~LLFloaterPreference();
-
- void apply();
- void cancel(const std::vector<std::string> settings_to_skip = {});
- /*virtual*/ void draw();
- /*virtual*/ bool postBuild();
- /*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void onClose(bool app_quitting);
- /*virtual*/ void changed();
- /*virtual*/ void changed(const LLUUID& session_id, U32 mask) {};
-
- // static data update, called from message handler
- static void updateUserInfo(const std::string& visibility);
-
- // refresh all the graphics preferences menus
- static void refreshEnabledGraphics();
-
- // translate user's do not disturb response message according to current locale if message is default, otherwise do nothing
- static void initDoNotDisturbResponse();
-
- // update Show Favorites checkbox
- static void updateShowFavoritesCheckbox(bool val);
-
- void processProperties( void* pData, EAvatarProcessorType type );
- void saveAvatarProperties( void );
- static void saveAvatarPropertiesCoro(const std::string url, bool allow_publish);
- void selectPrivacyPanel();
- void selectChatPanel();
- void getControlNames(std::vector<std::string>& names);
- // updates click/double-click action controls depending on values from settings.xml
- void updateClickActionViews();
- void updateSearchableItems();
-
- void onBtnOK(const LLSD& userdata);
- void onBtnCancel(const LLSD& userdata);
-
-protected:
-
- void onClickClearCache(); // Clear viewer texture cache, file cache on next startup
- void onClickBrowserClearCache(); // Clear web history and caches as well as viewer caches above
- void onLanguageChange();
- void onNotificationsChange(const std::string& OptionName);
- void onNameTagOpacityChange(const LLSD& newvalue);
-
- // set value of "DoNotDisturbResponseChanged" in account settings depending on whether do not disturb response
- // string differs from default after user changes.
- void onDoNotDisturbResponseChanged();
- // if the custom settings box is clicked
- void onChangeCustom();
- void updateMeterText(LLUICtrl* ctrl);
- // callback for defaults
- void setHardwareDefaults();
- void setRecommended();
- // callback for when client modifies a render option
- void onRenderOptionEnable();
- // callback for when client turns on impostors
- void onAvatarImpostorsEnable();
-
- // callback for commit in the "Single click on land" and "Double click on land" comboboxes.
- void onClickActionChange();
- // updates click/double-click action keybindngs depending on view values
- void updateClickActionControls();
-
- void onAtmosShaderChange();
-
-public:
- // This function squirrels away the current values of the controls so that
- // cancel() can restore them.
- void saveSettings();
-
- void saveIgnoredNotifications();
- void restoreIgnoredNotifications();
-
- void setCacheLocation(const LLStringExplicit& location);
-
- void onClickSetCache();
- void changeCachePath(const std::vector<std::string>& filenames, std::string proposed_name);
- void onClickResetCache();
- void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata);
- void onSelectSkin();
- void onClickSetSounds();
- void onClickEnablePopup();
- void onClickDisablePopup();
- void resetAllIgnored();
- void setAllIgnored();
- void onClickLogPath();
- void changeLogPath(const std::vector<std::string>& filenames, std::string proposed_name);
- bool moveTranscriptsAndLog();
- void setPersonalInfo(const std::string& visibility);
- void refreshEnabledState();
- void onCommitWindowedMode();
- void refresh(); // Refresh enable/disable
- // if the quality radio buttons are changed
- void onChangeQuality(const LLSD& data);
-
- void refreshUI();
-
- void onChangeMaturity();
- void onChangeComplexityMode(const LLSD& newvalue);
- void onChangeModelFolder();
- void onChangePBRFolder();
- void onChangeTextureFolder();
- void onChangeSoundFolder();
- void onChangeAnimationFolder();
- void onClickBlockList();
- void onClickProxySettings();
- void onClickTranslationSettings();
- void onClickPermsDefault();
- void onClickRememberedUsernames();
- void onClickAutoReplace();
- void onClickSpellChecker();
- void onClickRenderExceptions();
- void onClickAutoAdjustments();
- void onClickAdvanced();
- void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
- void getUIColor(LLUICtrl* ctrl, const LLSD& param);
- void onLogChatHistorySaved();
- void buildPopupLists();
- static void refreshSkin(void* data);
- void selectPanel(const LLSD& name);
- void saveGraphicsPreset(std::string& preset);
-
- void setRecommendedSettings();
- void resetAutotuneSettings();
-
-private:
-
- void onDeleteTranscripts();
- void onDeleteTranscriptsResponse(const LLSD& notification, const LLSD& response);
- void updateDeleteTranscriptsButton();
- void updateMaxComplexity();
- void updateComplexityText();
- static bool loadFromFilename(const std::string& filename, std::map<std::string, std::string> &label_map);
-
- static std::string sSkin;
- notifications_map mNotificationOptions;
- bool mGotPersonalInfo;
- bool mLanguageChanged;
- bool mAvatarDataInitialized;
- std::string mPriorInstantMessageLogPath;
-
- bool mOriginalHideOnlineStatus;
- std::string mDirectoryVisibility;
-
- bool mAllowPublish; // Allow showing agent in search
- std::string mSavedCameraPreset;
- std::string mSavedGraphicsPreset;
- LOG_CLASS(LLFloaterPreference);
-
- LLSearchEditor *mFilterEdit;
- std::unique_ptr< ll::prefs::SearchData > mSearchData;
- bool mSearchDataDirty;
-
- boost::signals2::connection mComplexityChangedSignal;
-
- void onUpdateFilterTerm( bool force = false );
- void collectSearchableItems();
- void filterIgnorableNotifications();
-
- std::map<std::string, bool> mIgnorableNotifs;
-};
-
-class LLPanelPreference : public LLPanel
-{
-public:
- LLPanelPreference();
- /*virtual*/ bool postBuild();
-
- virtual ~LLPanelPreference();
-
- virtual void apply();
- virtual void cancel(const std::vector<std::string> settings_to_skip = {});
- 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();
-
- void deletePreset(const LLSD& user_data);
- void savePreset(const LLSD& user_data);
- void loadPreset(const LLSD& user_data);
-
- class Updater;
-
-protected:
- typedef std::map<LLControlVariable*, LLSD> control_values_map_t;
- control_values_map_t mSavedValues;
-
-private:
- //for "Only friends and groups can call or IM me"
- static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&);
- //for "Allow Multiple Viewers"
- static void showMultipleViewersWarning(LLUICtrl*, const LLSD&);
- //for "Show my Favorite Landmarks at Login"
- static void handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const LLSD& value);
-
- static void toggleMuteWhenMinimized();
- typedef std::map<std::string, LLColor4> string_color_map_t;
- string_color_map_t mSavedColors;
-
- Updater* mBandWidthUpdater;
- LOG_CLASS(LLPanelPreference);
-};
-
-class LLPanelPreferenceGraphics : public LLPanelPreference
-{
-public:
- bool postBuild();
- void draw();
- void cancel(const std::vector<std::string> settings_to_skip = {});
- void saveSettings();
- void resetDirtyChilds();
- void setHardwareDefaults();
- void setPresetText();
-
-protected:
- bool hasDirtyChilds();
-
-private:
- void onPresetsListChange();
- LOG_CLASS(LLPanelPreferenceGraphics);
-};
-
-class LLPanelPreferenceControls : public LLPanelPreference, public LLKeyBindResponderInterface
-{
- LOG_CLASS(LLPanelPreferenceControls);
-public:
- LLPanelPreferenceControls();
- virtual ~LLPanelPreferenceControls();
-
- bool postBuild();
-
- void apply();
- void cancel(const std::vector<std::string> settings_to_skip = {});
- void saveSettings();
- void resetDirtyChilds();
-
- void onListCommit();
- void onModeCommit();
- void onRestoreDefaultsBtn();
- void onRestoreDefaultsResponse(const LLSD& notification, const LLSD& response);
-
- // Bypass to let Move & view read values without need to create own key binding handler
- // Todo: consider a better way to share access to keybindings
- bool canKeyBindHandle(const std::string &control, EMouseClickType click, KEY key, MASK mask);
- // Bypasses to let Move & view modify values without need to create own key binding handler
- void setKeyBind(const std::string &control, EMouseClickType click, KEY key, MASK mask, bool set /*set or reset*/ );
- void updateAndApply();
-
- // from interface
- /*virtual*/ bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes);
- /*virtual*/ void onDefaultKeyBind(bool all_modes);
- /*virtual*/ void onCancelKeyBind();
-
-private:
- // reloads settings, discards current changes, updates table
- void regenerateControls();
-
- // These fuctions do not clean previous content
- bool addControlTableColumns(const std::string &filename);
- bool addControlTableRows(const std::string &filename);
- void addControlTableSeparator();
-
- // Cleans content and then adds content from xml files according to current mEditingMode
- void populateControlTable();
-
- // Updates keybindings from storage to table
- void updateTable();
-
- LLScrollListCtrl* pControlsTable;
- LLComboBox *pKeyModeBox;
- LLKeyConflictHandler mConflictHandler[LLKeyConflictHandler::MODE_COUNT];
- std::string mEditingControl;
- S32 mEditingColumn;
- S32 mEditingMode;
-};
-
-class LLAvatarComplexityControls
-{
- public:
- static void updateMax(LLSliderCtrl* slider, LLTextBox* value_label, bool short_val = false);
- static void setText(U32 value, LLTextBox* text_box, bool short_val = false);
- static void updateMaxRenderTime(LLSliderCtrl* slider, LLTextBox* value_label, bool short_val = false);
- static void setRenderTimeText(F32 value, LLTextBox* text_box, bool short_val = false);
- static void setIndirectControls();
- static void setIndirectMaxNonImpostors();
- static void setIndirectMaxArc();
- LOG_CLASS(LLAvatarComplexityControls);
-};
-
-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 onClickCloseBtn(bool app_quitting = false);
-
- void onChangeSocksSettings();
-
-private:
-
- bool mSocksSettingsDirty;
- typedef std::map<LLControlVariable*, LLSD> control_values_map_t;
- control_values_map_t mSavedValues;
- LOG_CLASS(LLFloaterPreferenceProxy);
-};
-
-
-#endif // LL_LLPREFERENCEFLOATER_H
+/** + * @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" +#include "llconversationlog.h" +#include "llsearcheditor.h" +#include "llsetkeybinddialog.h" +#include "llkeyconflict.h" + +class LLConversationLogObserver; +class LLPanelPreference; +class LLPanelLCD; +class LLPanelDebug; +class LLMessageSystem; +class LLComboBox; +class LLScrollListCtrl; +class LLScrollListCell; +class LLSliderCtrl; +class LLSD; +class LLTextBox; + +namespace ll +{ + namespace prefs + { + struct SearchData; + } +} + +typedef std::map<std::string, std::string> notifications_map; + +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 LLConversationLogObserver +{ +public: + LLFloaterPreference(const LLSD& key); + ~LLFloaterPreference(); + + void apply(); + void cancel(const std::vector<std::string> settings_to_skip = {}); + /*virtual*/ void draw(); + /*virtual*/ bool postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); + /*virtual*/ void changed(); + /*virtual*/ void changed(const LLUUID& session_id, U32 mask) {}; + + // static data update, called from message handler + static void updateUserInfo(const std::string& visibility); + + // refresh all the graphics preferences menus + static void refreshEnabledGraphics(); + + // translate user's do not disturb response message according to current locale if message is default, otherwise do nothing + static void initDoNotDisturbResponse(); + + // update Show Favorites checkbox + static void updateShowFavoritesCheckbox(bool val); + + void processProperties( void* pData, EAvatarProcessorType type ); + void saveAvatarProperties( void ); + static void saveAvatarPropertiesCoro(const std::string url, bool allow_publish); + void selectPrivacyPanel(); + void selectChatPanel(); + void getControlNames(std::vector<std::string>& names); + // updates click/double-click action controls depending on values from settings.xml + void updateClickActionViews(); + void updateSearchableItems(); + + void onBtnOK(const LLSD& userdata); + void onBtnCancel(const LLSD& userdata); + +protected: + + void onClickClearCache(); // Clear viewer texture cache, file cache on next startup + void onClickBrowserClearCache(); // Clear web history and caches as well as viewer caches above + void onLanguageChange(); + void onNotificationsChange(const std::string& OptionName); + void onNameTagOpacityChange(const LLSD& newvalue); + + // set value of "DoNotDisturbResponseChanged" in account settings depending on whether do not disturb response + // string differs from default after user changes. + void onDoNotDisturbResponseChanged(); + // if the custom settings box is clicked + void onChangeCustom(); + void updateMeterText(LLUICtrl* ctrl); + // callback for defaults + void setHardwareDefaults(); + void setRecommended(); + // callback for when client modifies a render option + void onRenderOptionEnable(); + // callback for when client turns on impostors + void onAvatarImpostorsEnable(); + + // callback for commit in the "Single click on land" and "Double click on land" comboboxes. + void onClickActionChange(); + // updates click/double-click action keybindngs depending on view values + void updateClickActionControls(); + + void onAtmosShaderChange(); + +public: + // This function squirrels away the current values of the controls so that + // cancel() can restore them. + void saveSettings(); + + void saveIgnoredNotifications(); + void restoreIgnoredNotifications(); + + void setCacheLocation(const LLStringExplicit& location); + + void onClickSetCache(); + void changeCachePath(const std::vector<std::string>& filenames, std::string proposed_name); + void onClickResetCache(); + void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata); + void onSelectSkin(); + void onClickSetSounds(); + void onClickEnablePopup(); + void onClickDisablePopup(); + void resetAllIgnored(); + void setAllIgnored(); + void onClickLogPath(); + void changeLogPath(const std::vector<std::string>& filenames, std::string proposed_name); + bool moveTranscriptsAndLog(); + void setPersonalInfo(const std::string& visibility); + void refreshEnabledState(); + void onCommitWindowedMode(); + void refresh(); // Refresh enable/disable + // if the quality radio buttons are changed + void onChangeQuality(const LLSD& data); + + void refreshUI(); + + void onChangeMaturity(); + void onChangeComplexityMode(const LLSD& newvalue); + void onChangeModelFolder(); + void onChangePBRFolder(); + void onChangeTextureFolder(); + void onChangeSoundFolder(); + void onChangeAnimationFolder(); + void onClickBlockList(); + void onClickProxySettings(); + void onClickTranslationSettings(); + void onClickPermsDefault(); + void onClickRememberedUsernames(); + void onClickAutoReplace(); + void onClickSpellChecker(); + void onClickRenderExceptions(); + void onClickAutoAdjustments(); + void onClickAdvanced(); + void applyUIColor(LLUICtrl* ctrl, const LLSD& param); + void getUIColor(LLUICtrl* ctrl, const LLSD& param); + void onLogChatHistorySaved(); + void buildPopupLists(); + static void refreshSkin(void* data); + void selectPanel(const LLSD& name); + void saveGraphicsPreset(std::string& preset); + + void setRecommendedSettings(); + void resetAutotuneSettings(); + +private: + + void onDeleteTranscripts(); + void onDeleteTranscriptsResponse(const LLSD& notification, const LLSD& response); + void updateDeleteTranscriptsButton(); + void updateMaxComplexity(); + void updateComplexityText(); + static bool loadFromFilename(const std::string& filename, std::map<std::string, std::string> &label_map); + + static std::string sSkin; + notifications_map mNotificationOptions; + bool mGotPersonalInfo; + bool mLanguageChanged; + bool mAvatarDataInitialized; + std::string mPriorInstantMessageLogPath; + + bool mOriginalHideOnlineStatus; + std::string mDirectoryVisibility; + + bool mAllowPublish; // Allow showing agent in search + std::string mSavedCameraPreset; + std::string mSavedGraphicsPreset; + LOG_CLASS(LLFloaterPreference); + + LLSearchEditor *mFilterEdit; + std::unique_ptr< ll::prefs::SearchData > mSearchData; + bool mSearchDataDirty; + + boost::signals2::connection mComplexityChangedSignal; + + void onUpdateFilterTerm( bool force = false ); + void collectSearchableItems(); + void filterIgnorableNotifications(); + + std::map<std::string, bool> mIgnorableNotifs; +}; + +class LLPanelPreference : public LLPanel +{ +public: + LLPanelPreference(); + /*virtual*/ bool postBuild(); + + virtual ~LLPanelPreference(); + + virtual void apply(); + virtual void cancel(const std::vector<std::string> settings_to_skip = {}); + 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(); + + void deletePreset(const LLSD& user_data); + void savePreset(const LLSD& user_data); + void loadPreset(const LLSD& user_data); + + class Updater; + +protected: + typedef std::map<LLControlVariable*, LLSD> control_values_map_t; + control_values_map_t mSavedValues; + +private: + //for "Only friends and groups can call or IM me" + static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&); + //for "Allow Multiple Viewers" + static void showMultipleViewersWarning(LLUICtrl*, const LLSD&); + //for "Show my Favorite Landmarks at Login" + static void handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const LLSD& value); + + static void toggleMuteWhenMinimized(); + typedef std::map<std::string, LLColor4> string_color_map_t; + string_color_map_t mSavedColors; + + Updater* mBandWidthUpdater; + LOG_CLASS(LLPanelPreference); +}; + +class LLPanelPreferenceGraphics : public LLPanelPreference +{ +public: + bool postBuild(); + void draw(); + void cancel(const std::vector<std::string> settings_to_skip = {}); + void saveSettings(); + void resetDirtyChilds(); + void setHardwareDefaults(); + void setPresetText(); + +protected: + bool hasDirtyChilds(); + +private: + void onPresetsListChange(); + LOG_CLASS(LLPanelPreferenceGraphics); +}; + +class LLPanelPreferenceControls : public LLPanelPreference, public LLKeyBindResponderInterface +{ + LOG_CLASS(LLPanelPreferenceControls); +public: + LLPanelPreferenceControls(); + virtual ~LLPanelPreferenceControls(); + + bool postBuild(); + + void apply(); + void cancel(const std::vector<std::string> settings_to_skip = {}); + void saveSettings(); + void resetDirtyChilds(); + + void onListCommit(); + void onModeCommit(); + void onRestoreDefaultsBtn(); + void onRestoreDefaultsResponse(const LLSD& notification, const LLSD& response); + + // Bypass to let Move & view read values without need to create own key binding handler + // Todo: consider a better way to share access to keybindings + bool canKeyBindHandle(const std::string &control, EMouseClickType click, KEY key, MASK mask); + // Bypasses to let Move & view modify values without need to create own key binding handler + void setKeyBind(const std::string &control, EMouseClickType click, KEY key, MASK mask, bool set /*set or reset*/ ); + void updateAndApply(); + + // from interface + /*virtual*/ bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes); + /*virtual*/ void onDefaultKeyBind(bool all_modes); + /*virtual*/ void onCancelKeyBind(); + +private: + // reloads settings, discards current changes, updates table + void regenerateControls(); + + // These fuctions do not clean previous content + bool addControlTableColumns(const std::string &filename); + bool addControlTableRows(const std::string &filename); + void addControlTableSeparator(); + + // Cleans content and then adds content from xml files according to current mEditingMode + void populateControlTable(); + + // Updates keybindings from storage to table + void updateTable(); + + LLScrollListCtrl* pControlsTable; + LLComboBox *pKeyModeBox; + LLKeyConflictHandler mConflictHandler[LLKeyConflictHandler::MODE_COUNT]; + std::string mEditingControl; + S32 mEditingColumn; + S32 mEditingMode; +}; + +class LLAvatarComplexityControls +{ + public: + static void updateMax(LLSliderCtrl* slider, LLTextBox* value_label, bool short_val = false); + static void setText(U32 value, LLTextBox* text_box, bool short_val = false); + static void updateMaxRenderTime(LLSliderCtrl* slider, LLTextBox* value_label, bool short_val = false); + static void setRenderTimeText(F32 value, LLTextBox* text_box, bool short_val = false); + static void setIndirectControls(); + static void setIndirectMaxNonImpostors(); + static void setIndirectMaxArc(); + LOG_CLASS(LLAvatarComplexityControls); +}; + +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 onClickCloseBtn(bool app_quitting = false); + + void onChangeSocksSettings(); + +private: + + bool mSocksSettingsDirty; + typedef std::map<LLControlVariable*, LLSD> control_values_map_t; + control_values_map_t mSavedValues; + LOG_CLASS(LLFloaterPreferenceProxy); +}; + + +#endif // LL_LLPREFERENCEFLOATER_H |