From 7847c8941f8c78ab7cdef65aadf4dfccf645bbf3 Mon Sep 17 00:00:00 2001 From: callum Date: Thu, 9 Jun 2011 13:48:35 -0700 Subject: EXP-676 FIX As a web developer, I want to access information about the current state of the SL client, such as avatar location --- indra/newview/llviewermedia.cpp | 69 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 35 deletions(-) (limited to 'indra/newview/llviewermedia.cpp') diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 1e53274cd6..b94da4b64c 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2349,43 +2349,42 @@ void LLViewerMediaImpl::updateJavascriptObject() if ( mMediaSource ) { // flag to expose this information to internal browser or not. - bool expose_javascript_object = gSavedSettings.getBOOL("BrowserEnableJSObject"); - mMediaSource->jsExposeObjectEvent( expose_javascript_object ); + bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject"); + mMediaSource->jsEnableObject( enable ); - // indicate if the values we have are valid (currently do this blanket-fashion for - // everything depending on whether you are logged in or not - this may require a - // more granular approach once variables are added that ARE valid before login + // these values are only menaingful after login so don't set them before bool logged_in = LLLoginInstance::getInstance()->authSuccess(); - mMediaSource->jsValuesValidEvent( logged_in ); - - // current location within a region - LLVector3 agent_pos = gAgent.getPositionAgent(); - double x = agent_pos.mV[ VX ]; - double y = agent_pos.mV[ VY ]; - double z = agent_pos.mV[ VZ ]; - mMediaSource->jsAgentLocationEvent( x, y, z ); - - // current location within the grid - LLVector3d agent_pos_global = gAgent.getLastPositionGlobal(); - double global_x = agent_pos_global.mdV[ VX ]; - double global_y = agent_pos_global.mdV[ VY ]; - double global_z = agent_pos_global.mdV[ VZ ]; - mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z ); - - // current agent orientation - double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] ); - double angle = rotation * RAD_TO_DEG; - if ( angle < 0.0f ) angle = 360.0f + angle; // TODO: has to be a better way to get orientation! - mMediaSource->jsAgentOrientationEvent( angle ); - - // current region agent is in - std::string region_name(""); - LLViewerRegion* region = gAgent.getRegion(); - if ( region ) - { - region_name = region->getName(); - }; - mMediaSource->jsAgentRegionEvent( region_name ); + if ( logged_in ) + { + // current location within a region + LLVector3 agent_pos = gAgent.getPositionAgent(); + double x = agent_pos.mV[ VX ]; + double y = agent_pos.mV[ VY ]; + double z = agent_pos.mV[ VZ ]; + mMediaSource->jsAgentLocationEvent( x, y, z ); + + // current location within the grid + LLVector3d agent_pos_global = gAgent.getLastPositionGlobal(); + double global_x = agent_pos_global.mdV[ VX ]; + double global_y = agent_pos_global.mdV[ VY ]; + double global_z = agent_pos_global.mdV[ VZ ]; + mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z ); + + // current agent orientation + double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] ); + double angle = rotation * RAD_TO_DEG; + if ( angle < 0.0f ) angle = 360.0f + angle; // TODO: has to be a better way to get orientation! + mMediaSource->jsAgentOrientationEvent( angle ); + + // current region agent is in + std::string region_name(""); + LLViewerRegion* region = gAgent.getRegion(); + if ( region ) + { + region_name = region->getName(); + }; + mMediaSource->jsAgentRegionEvent( region_name ); + } // language code the viewer is set to mMediaSource->jsAgentLanguageEvent( LLUI::getLanguage() ); -- cgit v1.3 From 5999574c106d0d2566d191c754f6a630d8407787 Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Wed, 22 Jun 2011 16:12:01 -0700 Subject: making it so that inbox shows up quicker --- indra/newview/llsidepanelinventory.cpp | 64 +++++----------------------------- indra/newview/llviewermedia.cpp | 49 ++++++++++++++++++++++++++ indra/newview/llviewermedia.h | 2 -- 3 files changed, 58 insertions(+), 57 deletions(-) (limited to 'indra/newview/llviewermedia.cpp') diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 79d68de289..19c8ee0123 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -52,7 +52,6 @@ #include "llstring.h" #include "lltabcontainer.h" #include "llviewermedia.h" -#include "llviewernetwork.h" #include "llweb.h" static LLRegisterPanelClassWrapper t_inventory("sidepanel_inventory"); @@ -79,37 +78,6 @@ static const char * const INVENTORY_LAYOUT_STACK_NAME = "inventory_layout_stack" // Helpers // -class LLInventoryUserStatusResponder : public LLHTTPClient::Responder -{ -public: - LLInventoryUserStatusResponder(LLSidepanelInventory * sidepanelInventory) - : LLCurl::Responder() - , mSidepanelInventory(sidepanelInventory) - { - } - - void completed(U32 status, const std::string& reason, const LLSD& content) - { - if (isGoodStatus(status)) - { - // Complete success - mSidepanelInventory->enableInbox(true); - } - else if (status == 401) - { - // API is available for use but OpenID authorization failed - mSidepanelInventory->enableInbox(true); - } - else - { - // API in unavailable - llinfos << "Marketplace API is unavailable -- Inbox Disabled" << llendl; - } - } - -private: - LLSidepanelInventory * mSidepanelInventory; -}; // // Implementation @@ -135,6 +103,13 @@ LLSidepanelInventory::~LLSidepanelInventory() delete mCategoriesObserver; } +void handleInventoryDisplayInboxChanged() +{ + LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); + + sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox")); +} + BOOL LLSidepanelInventory::postBuild() { // UI elements from inventory panel @@ -226,34 +201,13 @@ BOOL LLSidepanelInventory::postBuild() LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this)); } + gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged)); + return TRUE; } void LLSidepanelInventory::handleLoginComplete() { - // - // Hard coding this as a temporary way to determine whether or not to display the inbox - // - - std::string url = "https://marketplace.secondlife.com/"; - - if (!LLGridManager::getInstance()->isInProductionGrid()) - { - std::string gridLabel = LLGridManager::getInstance()->getGridLabel(); - url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str()); - } - - url += "api/1/users/"; - url += gAgent.getID().getString(); - url += "/user_status"; - - LLSD headers = LLSD::emptyMap(); - headers["Accept"] = "*/*"; - headers["Cookie"] = LLViewerMedia::getOpenIDCookie(); - headers["User-Agent"] = LLViewerMedia::getCurrentUserAgent(); - - LLHTTPClient::get(url, new LLInventoryUserStatusResponder(this), headers); - // // Track inbox and outbox folder changes // diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 1e53274cd6..4be39bb88e 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -64,8 +64,10 @@ #include "llappviewer.h" #include "lllogininstance.h" //#include "llfirstuse.h" +#include "llviewernetwork.h" #include "llwindow.h" + #include "llfloatermediabrowser.h" // for handling window close requests and geometry change requests in media browser windows. #include "llfloaterwebcontent.h" // for handling window close requests and geometry change requests in media browser windows. @@ -1360,6 +1362,34 @@ void LLViewerMedia::removeCookie(const std::string &name, const std::string &dom } +class LLInventoryUserStatusResponder : public LLHTTPClient::Responder +{ +public: + LLInventoryUserStatusResponder() + : LLCurl::Responder() + { + } + + void completed(U32 status, const std::string& reason, const LLSD& content) + { + if (isGoodStatus(status)) + { + // Complete success + gSavedSettings.setBOOL("InventoryDisplayInbox", true); + } + else if (status == 401) + { + // API is available for use but OpenID authorization failed + gSavedSettings.setBOOL("InventoryDisplayInbox", true); + } + else + { + // API in unavailable + llinfos << "Marketplace API is unavailable -- Inbox Disabled" << llendl; + } + } +}; + ///////////////////////////////////////////////////////////////////////////////////////// // static void LLViewerMedia::setOpenIDCookie() @@ -1406,6 +1436,25 @@ void LLViewerMedia::setOpenIDCookie() LLHTTPClient::get(profile_url, new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()), headers); + + std::string url = "https://marketplace.secondlife.com/"; + + if (!LLGridManager::getInstance()->isInProductionGrid()) + { + std::string gridLabel = LLGridManager::getInstance()->getGridLabel(); + url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str()); + } + + url += "api/1/users/"; + url += gAgent.getID().getString(); + url += "/user_status"; + + headers = LLSD::emptyMap(); + headers["Accept"] = "*/*"; + headers["Cookie"] = sOpenIDCookie; + headers["User-Agent"] = getCurrentUserAgent(); + + LLHTTPClient::get(url, new LLInventoryUserStatusResponder(), headers); } } diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 180e1d5676..a70c6f4887 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -160,8 +160,6 @@ public: static void createSpareBrowserMediaSource(); static LLPluginClassMedia* getSpareBrowserMediaSource(); - - static std::string getOpenIDCookie() { return sOpenIDCookie; } private: static void setOpenIDCookie(); -- cgit v1.3 From e443dd3aab1c0bb017ffbf7a0b53edde3680f33b Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Wed, 29 Jun 2011 15:21:10 -0700 Subject: EXP-944 Add additional logging for troubleshooting EXP-930 - DD inbox not showing on linux viewer --- indra/newview/llviewermedia.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llviewermedia.cpp') diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 74b87045e7..39ad1cfd20 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1385,7 +1385,7 @@ public: else { // API in unavailable - llinfos << "Marketplace API is unavailable -- Inbox Disabled" << llendl; + llinfos << "Marketplace API is unavailable -- Inbox Disabled, status = " << status << ", reason = " << reason << llendl; } } }; -- cgit v1.3 From 8e9fd4bdf2ddce90d8e4bfc8f49b0ebeec29c9fe Mon Sep 17 00:00:00 2001 From: Leslie Linden Date: Thu, 7 Jul 2011 12:58:06 -0700 Subject: EXP-985 FIX -- Always show Inbox panel if "Received Items" folder exists The presence of the inbox folder now forces the "Received Items" folder to be visible. The same logic applies to the outbox as well. Reviewed by Richard. --- indra/newview/llsidepanelinventory.cpp | 14 ++++++++++++++ indra/newview/llviewermedia.cpp | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewermedia.cpp') diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index fc049f1854..6a3a6200e9 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -165,6 +165,13 @@ void handleInventoryDisplayInboxChanged() sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox")); } +void handleInventoryDisplayOutboxChanged() +{ + LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); + + sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox")); +} + BOOL LLSidepanelInventory::postBuild() { // UI elements from inventory panel @@ -258,6 +265,7 @@ BOOL LLSidepanelInventory::postBuild() } gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged)); + gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged)); return TRUE; } @@ -284,12 +292,18 @@ void LLSidepanelInventory::handleLoginComplete() if (!inbox_id.isNull()) { observeInboxModifications(inbox_id); + + // Enable the display of the inbox if it exists + enableInbox(true); } // Set up observer for outbox changes, if we have an outbox already if (!outbox_id.isNull()) { observeOutboxModifications(outbox_id); + + // Enable the display of the outbox if it exists + enableOutbox(true); } } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 39ad1cfd20..1be58eae45 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1385,7 +1385,7 @@ public: else { // API in unavailable - llinfos << "Marketplace API is unavailable -- Inbox Disabled, status = " << status << ", reason = " << reason << llendl; + llinfos << "Marketplace API is unavailable -- Inbox may be disabled, status = " << status << ", reason = " << reason << llendl; } } }; -- cgit v1.3