From 3e1f8f058a32f00320e560480dc93b62a3ce7619 Mon Sep 17 00:00:00 2001 From: Patrick Sapinski Date: Wed, 1 Sep 2010 00:52:51 -0400 Subject: automatic translation feature --- linden/indra/newview/llfloaterchat.cpp | 22 +++++++ linden/indra/newview/llfloaterchat.h | 2 + linden/indra/newview/llprefschat.cpp | 11 ++++ linden/indra/newview/llviewercontrol.cpp | 31 ++++++++- .../default/xui/en-us/floater_chat_history.xml | 15 +++-- .../default/xui/en-us/panel_preferences_chat.xml | 75 ++++++++++++++++++++++ 6 files changed, 148 insertions(+), 8 deletions(-) diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index b14930b..f7ff3f9 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp @@ -108,6 +108,8 @@ LLFloaterChat::LLFloaterChat(const LLSD& seed) LLUICtrlFactory::getInstance()->buildFloater(this,"floater_chat_history.xml",&getFactoryMap(),no_open); childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes + childSetCommitCallback("translate chat",onClickToggleTranslateChat,this); + childSetValue("translate chat", gSavedSettings.getBOOL("TranslateChat")); childSetVisible("Chat History Editor with mute",FALSE); childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this); setDefaultBtn("Chat"); @@ -429,6 +431,26 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data) } } +// Update the "TranslateChat" pref after "translate chat" checkbox is toggled in +// the "Local Chat" floater. +//static +void LLFloaterChat::onClickToggleTranslateChat(LLUICtrl* caller, void *data) +{ + LLFloaterChat* floater = (LLFloaterChat*)data; + + BOOL translate_chat = floater->getChild("translate chat")->get(); + gSavedSettings.setBOOL("TranslateChat", translate_chat); +} + +// Update the "translate chat" checkbox after the "TranslateChat" pref is set in +// some other place (e.g. prefs dialog). +//static +void LLFloaterChat::updateSettings() +{ + BOOL translate_chat = gSavedSettings.getBOOL("TranslateChat"); + LLFloaterChat::getInstance(LLSD())->getChild("translate chat")->set(translate_chat); +} + // Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, diff --git a/linden/indra/newview/llfloaterchat.h b/linden/indra/newview/llfloaterchat.h index e2bb54c..f894675 100644 --- a/linden/indra/newview/llfloaterchat.h +++ b/linden/indra/newview/llfloaterchat.h @@ -65,6 +65,7 @@ public: virtual void onVisibilityChange(BOOL cur_visibility); virtual void setMinimized(BOOL); void updateConsoleVisibility(); + void updateSettings(); static void setHistoryCursorAndScrollToEnd(); @@ -77,6 +78,7 @@ public: static void onClickMute(void *data); static void onClickToggleShowMute(LLUICtrl* caller, void *data); + static void onClickToggleTranslateChat(LLUICtrl* caller, void *data); static void onClickToggleActiveSpeakers(void* userdata); static void chatFromLogFile(LLLogChat::ELogLineType type,std::string line, void* userdata); static void loadHistory(); diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp index 2e08cac..b4614b8 100644 --- a/linden/indra/newview/llprefschat.cpp +++ b/linden/indra/newview/llprefschat.cpp @@ -76,6 +76,8 @@ private: BOOL mChatChannel; F32 mConsoleOpacity; F32 mBubbleOpacity; + std::string mTranslateLanguage; + BOOL mTranslateChat; }; LLPrefsChatImpl::LLPrefsChatImpl() @@ -110,6 +112,8 @@ LLPrefsChatImpl::LLPrefsChatImpl() childSetValue("toggle_channel_control", gSavedSettings.getBOOL("ChatChannelSelect")); childSetValue("console_opacity", gSavedSettings.getF32("ConsoleBackgroundOpacity")); childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity")); + childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage")); + childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat")); } void LLPrefsChatImpl::refreshValues() @@ -137,6 +141,8 @@ void LLPrefsChatImpl::refreshValues() mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect"); mConsoleOpacity = gSavedSettings.getF32("ConsoleBackgroundOpacity"); mBubbleOpacity = gSavedSettings.getF32("ChatBubbleOpacity"); + mTranslateLanguage = gSavedSettings.getString("TranslateLanguage"); + mTranslateChat = gSavedSettings.getBOOL("TranslateChat"); } void LLPrefsChatImpl::cancel() @@ -163,6 +169,8 @@ void LLPrefsChatImpl::cancel() gSavedSettings.setBOOL("ChatChannelSelect", mChatChannel); gSavedSettings.setF32("ConsoleBackgroundOpacity", mConsoleOpacity); gSavedSettings.setF32("ChatBubbleOpacity", mBubbleOpacity); + gSavedSettings.setString("TranslateLanguage", mTranslateLanguage); + gSavedSettings.setBOOL("TranslateChat", mTranslateChat); } void LLPrefsChatImpl::apply() @@ -194,6 +202,9 @@ void LLPrefsChatImpl::apply() gSavedSettings.setF32("ConsoleBackgroundOpacity", childGetValue("console_opacity").asReal()); gSavedSettings.setF32("ChatBubbleOpacity", childGetValue("bubble_chat_opacity").asReal()); + gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox")); + gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat")); + BOOL chan_check = childGetValue("toggle_channel_control"); gSavedSettings.setBOOL("ChatChannelSelect", chan_check); if (mChatChannel != chan_check) diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp index e1507d4..a73d0ab 100644 --- a/linden/indra/newview/llviewercontrol.cpp +++ b/linden/indra/newview/llviewercontrol.cpp @@ -71,6 +71,7 @@ #include "llrender.h" #include "llmediamanager.h" #include "llslider.h" +#include "llfloaterchat.h" #ifdef TOGGLE_HACKED_GODLIKE_VIEWER @@ -485,6 +486,32 @@ bool handleVoiceClientPrefsChanged(const LLSD& newvalue) return true; } +bool handleTranslateChatPrefsChanged(const LLSD& newvalue) +{ + LLFloaterChat* floaterp = LLFloaterChat::getInstance(); + + if(floaterp) + { + // update "translate chat" pref in "Local Chat" floater + floaterp->updateSettings(); + } + return true; +} + +// [RLVa:KB] - Checked: 2009-08-11 (RLVa-1.0.1h) | Added: RLVa-1.0.1h +bool rlvHandleEnableLegacyNamingChanged(const LLSD& newvalue) +{ + rlv_handler_t::fLegacyNaming = newvalue.asBoolean(); + return true; +} + +bool rlvHandleShowNameTagsChanged(const LLSD& newvalue) +{ + RlvSettings::fShowNameTags = newvalue.asBoolean(); + return true; +} +// [/RLVa:KB] + bool handleMediaDebugLevelChanged(const LLSD& newvalue) { LLMediaManager *mgr = LLMediaManager::getInstance(); @@ -663,7 +690,8 @@ void settings_setup_listeners() gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); gSavedSettings.getControl("MediaDebugLevel")->getSignal()->connect(boost::bind(&handleMediaDebugLevelChanged, _1)); gSavedSettings.getControl("SliderScrollWheelMultiplier")->getSignal()->connect(boost::bind(&handleSliderScrollWheelMultiplierChanged, _1)); - + gSavedSettings.getControl("TranslateChat")->getSignal()->connect(boost::bind(&handleTranslateChatPrefsChanged, _1)); + // [RLVa:KB] - Checked: 2009-08-11 (RLVa-1.0.1h) | Added: RLVa-1.0.1h if (gSavedSettings.controlExists(RLV_SETTING_ENABLELEGACYNAMING)) gSavedSettings.getControl(RLV_SETTING_ENABLELEGACYNAMING)->getSignal()->connect(boost::bind(&rlvHandleEnableLegacyNamingChanged, _1)); @@ -751,7 +779,6 @@ template <> eControlType get_control_type(const LLSD& in, LLSD& out) return TYPE_LLSD; } - #if TEST_CACHED_CONTROL #define DECL_LLCC(T, V) static LLCachedControl mySetting_##T("TestCachedControl"#T, V) diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml b/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml index 54c146d..2e6fee4 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml @@ -65,9 +65,9 @@ Control your camera - - @@ -75,10 +75,13 @@ Gestures - -