From 145c9172381f8bef303a86689b52dadf6a05975a Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Thu, 15 Jul 2010 02:02:57 -0700 Subject: Fixed Bug #262: 'Help > Viewer Help' name does not match behavior (also fixed LLWeb::loadURL) --- linden/indra/newview/hippoGridManager.cpp | 89 +++++++++++++--------- linden/indra/newview/hippoGridManager.h | 65 ++++++++-------- linden/indra/newview/llfloaterhtmlhelp.cpp | 27 ++++--- linden/indra/newview/llstartup.cpp | 2 +- linden/indra/newview/llweb.cpp | 4 +- .../newview/skins/default/xui/en-us/menu_login.xml | 4 +- .../skins/default/xui/en-us/menu_viewer.xml | 2 +- 7 files changed, 108 insertions(+), 85 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/hippoGridManager.cpp b/linden/indra/newview/hippoGridManager.cpp index c9f2549..ccf63f5 100644 --- a/linden/indra/newview/hippoGridManager.cpp +++ b/linden/indra/newview/hippoGridManager.cpp @@ -23,7 +23,7 @@ // ******************************************************************** // Global Variables -HippoGridManager *gHippoGridManager = 0; +HippoGridManager* gHippoGridManager = 0; HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO(""); @@ -39,9 +39,22 @@ HippoGridInfo HippoGridInfo::FALLBACK_GRIDINFO(""); // ******************************************************************** // Initialize -HippoGridInfo::HippoGridInfo(const std::string &gridNick) : - mPlatform(PLATFORM_OTHER), +HippoGridInfo::HippoGridInfo(const std::string& gridNick) : + mPlatform(PLATFORM_OPENSIM), mGridNick(gridNick), + mGridName(LLStringUtil::null), + mLoginUri(LLStringUtil::null), + mLoginPage(LLStringUtil::null), + mHelperUri(LLStringUtil::null), + mWebSite(LLStringUtil::null), + mSupportUrl(LLStringUtil::null), + mRegisterUrl(LLStringUtil::null), + mPasswordUrl(LLStringUtil::null), + mSearchUrl(LLStringUtil::null), + mFirstName(LLStringUtil::null), + mLastName(LLStringUtil::null), + mAvatarPassword(LLStringUtil::null), + mXmlState(XML_VOID), mVoiceConnector("SLVoice"), mRenderCompat(true), mMaxAgentGroups(-1), @@ -167,7 +180,7 @@ void HippoGridInfo::setPlatform(Platform platform) } -void HippoGridInfo::setPlatform(const std::string &platform) +void HippoGridInfo::setPlatform(const std::string& platform) { std::string tmp = platform; for (unsigned i=0; imXmlState = XML_GRIDNICK; else if (strcasecmp(name, "gridname") == 0) @@ -376,16 +389,16 @@ void HippoGridInfo::onXmlElementStart(void *userData, const XML_Char *name, cons } //static -void HippoGridInfo::onXmlElementEnd(void *userData, const XML_Char *name) +void HippoGridInfo::onXmlElementEnd(void* userData, const XML_Char* name) { - HippoGridInfo *self = (HippoGridInfo*)userData; + HippoGridInfo* self = (HippoGridInfo*)userData; self->mXmlState = XML_VOID; } //static -void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len) +void HippoGridInfo::onXmlCharacterData(void* userData, const XML_Char* s, int len) { - HippoGridInfo *self = (HippoGridInfo*)userData; + HippoGridInfo* self = (HippoGridInfo*)userData; switch (self->mXmlState) { case XML_GRIDNICK: @@ -507,9 +520,9 @@ void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const // Static Helpers // static -const char *HippoGridInfo::getPlatformString(Platform platform) +const char* HippoGridInfo::getPlatformString(Platform platform) { - static const char *platformStrings[PLATFORM_LAST] = + static const char* platformStrings[PLATFORM_LAST] = { "Other", "OpenSim", "SecondLife" }; @@ -625,7 +638,7 @@ void HippoGridManager::discardAndReload() // ******************************************************************** // Public Access -HippoGridInfo* HippoGridManager::getGrid(const std::string &grid) const +HippoGridInfo* HippoGridManager::getGrid(const std::string& grid) const { std::map::const_iterator it; it = mGridInfo.find(grid); @@ -648,7 +661,7 @@ HippoGridInfo* HippoGridManager::getConnectedGrid() const HippoGridInfo* HippoGridManager::getCurrentGrid() const { - HippoGridInfo *grid = getGrid(mCurrentGrid); + HippoGridInfo* grid = getGrid(mCurrentGrid); if (grid) { return grid; @@ -679,10 +692,10 @@ void HippoGridManager::setCurrentGridAsConnected() } -void HippoGridManager::addGrid(HippoGridInfo *grid) +void HippoGridManager::addGrid(HippoGridInfo* grid) { if (!grid) return; - const std::string &nick = grid->getGridNick(); + const std::string& nick = grid->getGridNick(); if (nick == "") { llwarns << "Ignoring to try adding grid with empty nick." << llendl; @@ -699,7 +712,7 @@ void HippoGridManager::addGrid(HippoGridInfo *grid) } -void HippoGridManager::deleteGrid(const std::string &grid) +void HippoGridManager::deleteGrid(const std::string& grid) { GridIterator it = mGridInfo.find(grid); if (it == mGridInfo.end()) { @@ -710,13 +723,13 @@ void HippoGridManager::deleteGrid(const std::string &grid) llinfos << "Number of grids now: " << mGridInfo.size() << llendl; if (mGridInfo.empty()) llinfos << "Grid info map is empty." << llendl; if (grid == mDefaultGrid) - setDefaultGrid(""); // sets first grid, if map not empty + setDefaultGrid(LLStringUtil::null); // sets first grid, if map not empty if (grid == mCurrentGrid) mCurrentGrid = mDefaultGrid; } -void HippoGridManager::setDefaultGrid(const std::string &grid) +void HippoGridManager::setDefaultGrid(const std::string& grid) { GridIterator it = mGridInfo.find(grid); if (it != mGridInfo.end()) @@ -738,7 +751,7 @@ void HippoGridManager::setDefaultGrid(const std::string &grid) } -void HippoGridManager::setCurrentGrid(const std::string &grid) +void HippoGridManager::setCurrentGrid(const std::string& grid) { GridIterator it = mGridInfo.find(grid); if (it != mGridInfo.end()) @@ -774,7 +787,7 @@ void HippoGridManager::loadFromFile() } -void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer) +void HippoGridManager::parseUrl(const char* url, bool mergeIfNewer) { llinfos << "Loading grid info from '" << url << "'." << llendl; @@ -796,7 +809,7 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer) parseData(gridInfo, mergeIfNewer); } -void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer) +void HippoGridManager::parseFile(const std::string& fileName, bool mergeIfNewer) { llifstream infile; infile.open(fileName.c_str()); @@ -853,7 +866,7 @@ void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) else if (gridMap.has("gridnick") && gridMap.has("loginuri")) { std::string gridnick = gridMap["gridnick"]; - HippoGridInfo *grid; + HippoGridInfo* grid; GridIterator it = mGridInfo.find(gridnick); bool newGrid = (it == mGridInfo.end()); if (newGrid) @@ -900,7 +913,7 @@ void HippoGridManager::saveFile() GridIterator it, end = mGridInfo.end(); for (it = mGridInfo.begin(); it != end; ++it, i++) { - HippoGridInfo *grid = it->second; + HippoGridInfo* grid = it->second; gridInfo[i]["gridnick"] = grid->getGridNick(); gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform()); gridInfo[i]["gridname"] = grid->getGridName(); diff --git a/linden/indra/newview/hippoGridManager.h b/linden/indra/newview/hippoGridManager.h index b304722..5ad6ca2 100644 --- a/linden/indra/newview/hippoGridManager.h +++ b/linden/indra/newview/hippoGridManager.h @@ -33,7 +33,7 @@ public: SEARCH_ALL_TEMPLATE }; - explicit HippoGridInfo(const std::string &gridNick); + explicit HippoGridInfo(const std::string& gridNick); Platform getPlatform(); bool isOpenSimulator() const; @@ -51,7 +51,7 @@ public: const std::string& getFirstName() const; const std::string& getLastName() const; const std::string& getAvatarPassword() const; - const std::string &getVoiceConnector() const { return mVoiceConnector; } + const std::string& getVoiceConnector() const { return mVoiceConnector; } std::string getSearchUrl(SearchType ty, bool is_web) const; bool isRenderCompat() const; int getMaxAgentGroups() const { return mMaxAgentGroups; } @@ -62,31 +62,31 @@ public: std::string getGroupCreationFee() const; std::string getDirectoryFee() const; - void setPlatform (const std::string &platform); + void setPlatform (const std::string& platform); void setPlatform (Platform platform); - void setGridName (const std::string &gridName); - void setLoginUri (const std::string &loginUri); - void setLoginPage(const std::string &loginPage); - void setHelperUri(const std::string &helperUri); - void setWebSite (const std::string &website); - void setSupportUrl(const std::string &url); - void setRegisterUrl(const std::string &url); - void setPasswordUrl(const std::string &url); - void setSearchUrl(const std::string &url); + void setGridName (const std::string& gridName); + void setLoginUri (const std::string& loginUri); + void setLoginPage(const std::string& loginPage); + void setHelperUri(const std::string& helperUri); + void setWebSite (const std::string& website); + void setSupportUrl(const std::string& url); + void setRegisterUrl(const std::string& url); + void setPasswordUrl(const std::string& url); + void setSearchUrl(const std::string& url); void setRenderCompat(bool compat); void setMaxAgentGroups(int max) { mMaxAgentGroups = max; } - void setFirstName(const std::string &firstName); - void setLastName(const std::string &lastName); - void setAvatarPassword(const std::string &avatarPassword); - void setVoiceConnector(const std::string &vc) { mVoiceConnector = vc; } + void setFirstName(const std::string& firstName); + void setLastName(const std::string& lastName); + void setAvatarPassword(const std::string& avatarPassword); + void setVoiceConnector(const std::string& vc) { mVoiceConnector = vc; } - void setCurrencySymbol(const std::string &sym); - void setRealCurrencySymbol(const std::string &sym); + void setCurrencySymbol(const std::string& sym); + void setRealCurrencySymbol(const std::string& sym); void setDirectoryFee(int fee); bool retrieveGridInfo(); - static const char *getPlatformString(Platform platform); + static const char* getPlatformString(Platform platform); static std::string sanitizeGridNick(std::string &gridnick); static HippoGridInfo FALLBACK_GRIDINFO; @@ -116,7 +116,8 @@ private: int mDirectoryFee; // for parsing grid info XML - enum XmlState { + enum XmlState + { XML_VOID, XML_GRIDNICK, XML_PLATFORM, XML_GRIDNAME, XML_LOGINURI, XML_LOGINPAGE, XML_HELPERURI, XML_WEBSITE, XML_SUPPORT, XML_REGISTER, XML_PASSWORD, XML_SEARCH @@ -126,9 +127,9 @@ private: static std::string sanitizeUri(std::string &uri); void formatFee(std::string &fee, int cost, bool showFree) const; - static void onXmlElementStart(void *userData, const XML_Char *name, const XML_Char **atts); - static void onXmlElementEnd(void *userData, const XML_Char *name); - static void onXmlCharacterData(void *userData, const XML_Char *s, int len); + static void onXmlElementStart(void* userData, const XML_Char* name, const XML_Char** atts); + static void onXmlElementEnd(void* userData, const XML_Char* name); + static void onXmlCharacterData(void* userData, const XML_Char* s, int len); }; @@ -142,18 +143,18 @@ public: void saveFile(); void discardAndReload(); - HippoGridInfo* getGrid(const std::string &grid) const; + HippoGridInfo* getGrid(const std::string& grid) const; HippoGridInfo* getConnectedGrid() const; HippoGridInfo* getCurrentGrid() const; const std::string& getDefaultGridNick() const; const std::string& getCurrentGridNick() const; - void setDefaultGrid(const std::string &grid); - void setCurrentGrid(const std::string &grid); + void setDefaultGrid(const std::string& grid); + void setCurrentGrid(const std::string& grid); void setCurrentGridAsConnected(); - void addGrid(HippoGridInfo *grid); - void deleteGrid(const std::string &grid); + void addGrid(HippoGridInfo* grid); + void deleteGrid(const std::string& grid); typedef std::map::iterator GridIterator; GridIterator beginGrid() { return mGridInfo.begin(); } @@ -163,18 +164,18 @@ private: std::map mGridInfo; std::string mDefaultGrid; std::string mCurrentGrid; - HippoGridInfo *mConnectedGrid; + HippoGridInfo* mConnectedGrid; int mDefaultGridsVersion; void cleanup(); void loadFromFile(); - void parseFile(const std::string &fileName, bool mergeIfNewer); - void parseUrl(const char *url, bool mergeIfNewer); + void parseFile(const std::string& fileName, bool mergeIfNewer); + void parseUrl(const char* url, bool mergeIfNewer); void parseData(LLSD &gridInfo, bool mergeIfNewer); }; -extern HippoGridManager *gHippoGridManager; +extern HippoGridManager* gHippoGridManager; #endif diff --git a/linden/indra/newview/llfloaterhtmlhelp.cpp b/linden/indra/newview/llfloaterhtmlhelp.cpp index 5caf7b1..1777403 100644 --- a/linden/indra/newview/llfloaterhtmlhelp.cpp +++ b/linden/indra/newview/llfloaterhtmlhelp.cpp @@ -438,16 +438,22 @@ void LLFloaterHtmlHelp::show(std::string url, std::string title) floater_html->setVisible(FALSE); url = gHippoGridManager->getConnectedGrid()->getSupportUrl(); - if (!url.empty()) { - if (gSavedSettings.getBOOL("UseExternalBrowser")) { + if (!url.empty()) + { + if (gSavedSettings.getBOOL("UseExternalBrowser")) + { LLSD payload; payload["url"] = url; LLNotifications::instance().add("ClickOpenF1Help", LLSD(), payload, onClickF1HelpLoadURL); - } else { + } + else + { // don't wait, just do it - LLWeb::loadURL(url); + LLWeb::loadURLInternal(url); } - } else { + } + else + { LLNotifications::instance().add("NoSupportUrl"); } } @@ -458,10 +464,13 @@ bool LLFloaterHtmlHelp::onClickF1HelpLoadURL(const LLSD& notification, const LLS S32 option = LLNotification::getSelectedOption(notification, response); if (option == 0) { - const std::string &url = notification["payload"]["url"].asString(); - if (!url.empty()) { - LLWeb::loadURL(url); - } else { + const std::string& url = notification["payload"]["url"].asString(); + if (!url.empty()) + { + LLWeb::loadURLExternal(url); + } + else + { llwarns << "Support URL not available." << llendl; } } diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index ac81b9c..baa19e7 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp @@ -3053,7 +3053,7 @@ bool login_alert_status(const LLSD& notification, const LLSD& response) break; case 1: { // Help const std::string &url = gHippoGridManager->getConnectedGrid()->getSupportUrl(); - if (!url.empty()) LLWeb::loadURL(url); + if (!url.empty()) LLWeb::loadURLInternal(url); break; } case 2: // Teleport diff --git a/linden/indra/newview/llweb.cpp b/linden/indra/newview/llweb.cpp index 6425156..fb4b063 100644 --- a/linden/indra/newview/llweb.cpp +++ b/linden/indra/newview/llweb.cpp @@ -55,7 +55,7 @@ void LLWeb::loadURL(const std::string& url) } else { - LLFloaterMediaBrowser::showInstance(url); + LLFloaterMediaBrowser::getInstance()->openMedia(url); } } @@ -71,7 +71,7 @@ void LLWeb::loadURLExternal(const std::string& url) // static void LLWeb::loadURLInternal(const std::string& url) { - LLFloaterMediaBrowser::showInstance(url); + LLFloaterMediaBrowser::getInstance()->openMedia(url); } diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml index f1a8a54..454774e 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml @@ -21,8 +21,8 @@ - + - -- cgit v1.1