From 18e8d57b210fd5a7ca1bb8fc114a3e4faf8bf537 Mon Sep 17 00:00:00 2001 From: Leslie Linden Date: Mon, 11 Jul 2011 17:45:29 -0700 Subject: EXP-995 FIX -- New icon scrolls into Received Items panel heading EXP-903 FIX -- Newness/Freshness number does not decrease as items are opened in Inbox * Brought back freshness with the freshness * New badge and label color from Gibson * Inventory Panel now allows display of badges with proper clipping Reviewed by Richard. --- indra/newview/llinventorypanel.cpp | 12 ++++++++++++ indra/newview/llinventorypanel.h | 3 +++ indra/newview/llpanelmarketplaceinbox.cpp | 9 +++++---- indra/newview/llpanelmarketplaceinboxinventory.cpp | 20 +++++++++++++++----- indra/newview/llpanelmarketplaceinboxinventory.h | 4 ++++ indra/newview/skins/default/colors.xml | 2 +- .../textures/widgets/Badge_Background_New.png | Bin 0 -> 1369 bytes .../newview/skins/default/xui/en/widgets/badge.xml | 3 +++ .../xui/en/widgets/inbox_folder_view_folder.xml | 11 ++++++++++- 9 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 indra/newview/skins/default/textures/widgets/Badge_Background_New.png (limited to 'indra/newview') diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 702e8d5a1f..d5d40ca65d 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -902,6 +902,18 @@ void LLInventoryPanel::onFocusReceived() LLPanel::onFocusReceived(); } +bool LLInventoryPanel::addBadge(LLBadge * badge) +{ + bool badge_added = false; + + if (acceptsBadge()) + { + badge_added = badge->addToView(mFolderRoot); + } + + return badge_added; +} + void LLInventoryPanel::openAllFolders() { mFolderRoot->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index a4287a438e..7676bbb6d7 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -125,6 +125,9 @@ public: /*virtual*/ void onFocusLost(); /*virtual*/ void onFocusReceived(); + // LLBadgeHolder methods + bool addBadge(LLBadge * badge); + // Call this method to set the selection. void openAllFolders(); void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus); diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 28025f58d4..3accc43ab6 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -27,6 +27,7 @@ #include "llviewerprecompiledheaders.h" #include "llpanelmarketplaceinbox.h" +#include "llpanelmarketplaceinboxinventory.h" #include "llappviewer.h" #include "llbutton.h" @@ -36,7 +37,7 @@ #include "llviewercontrol.h" -#define SUPPORTING_FRESH_ITEM_COUNT 0 +#define SUPPORTING_FRESH_ITEM_COUNT 1 static LLRegisterPanelClassWrapper t_panel_marketplace_inbox("panel_marketplace_inbox"); @@ -159,10 +160,10 @@ U32 LLPanelMarketplaceInbox::getFreshItemCount() const for (; folders_it != folders_end; ++folders_it) { - const LLFolderViewFolder * folder = *folders_it; + const LLFolderViewFolder * folder_view = *folders_it; + const LLInboxFolderViewFolder * inbox_folder_view = dynamic_cast(folder_view); - // TODO: Replace this check with new "fresh" flag - if (folder->getCreationDate() > 1500) + if (inbox_folder_view && inbox_folder_view->isFresh()) { fresh_item_count++; } diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index 5dff73ee6a..8542ea2ae4 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -141,7 +141,7 @@ LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge LLInboxFolderViewFolder::LLInboxFolderViewFolder(const Params& p) : LLFolderViewFolder(p) , LLBadgeOwner(getHandle()) - , mFresh(false) + , mFresh(true) { initBadgeParams(p.new_badge()); } @@ -150,6 +150,19 @@ LLInboxFolderViewFolder::~LLInboxFolderViewFolder() { } +// virtual +time_t LLInboxFolderViewFolder::getCreationDate() const +{ + time_t ret_val = LLFolderViewFolder::getCreationDate(); + + if (!mCreationDate) + { + updateFlag(); + } + + return ret_val; +} + // virtual void LLInboxFolderViewFolder::draw() { @@ -166,10 +179,7 @@ void LLInboxFolderViewFolder::draw() void LLInboxFolderViewFolder::updateFlag() const { LLDate saved_freshness_date = LLDate(gSavedSettings.getString("InboxFreshnessDate")); - if (getCreationDate() > saved_freshness_date.secondsSinceEpoch()) - { - mFresh = true; - } + mFresh = (mCreationDate > saved_freshness_date.secondsSinceEpoch()); } void LLInboxFolderViewFolder::selectItem() diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h index 7b124fdccc..899e459896 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.h +++ b/indra/newview/llpanelmarketplaceinboxinventory.h @@ -66,12 +66,16 @@ public: LLInboxFolderViewFolder(const Params& p); ~LLInboxFolderViewFolder(); + + time_t getCreationDate() const; void draw(); void updateFlag() const; void selectItem(); void toggleOpen(); + + bool isFresh() const { return mFresh; } protected: void setCreationDate(time_t creation_date_utc) const; diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 76965ad14b..31b6fc77f5 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -134,7 +134,7 @@ reference="AvatarListItemIconOfflineColor" /> + value="1.0 0.40 0.0 1.0" /> diff --git a/indra/newview/skins/default/textures/widgets/Badge_Background_New.png b/indra/newview/skins/default/textures/widgets/Badge_Background_New.png new file mode 100644 index 0000000000..9f114f2e4a Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/Badge_Background_New.png differ diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml index f77c4b7178..2d4c02b092 100644 --- a/indra/newview/skins/default/xui/en/widgets/badge.xml +++ b/indra/newview/skins/default/xui/en/widgets/badge.xml @@ -7,11 +7,14 @@ image="Badge_Background" image_color="BadgeImageColor" label_color="BadgeLabelColor" + label_offset_horiz="0" + label_offset_vert="0" location="top_left" location_percent_hcenter="85" location_percent_vcenter="85" padding_horiz="7" padding_vert="4" requests_front="true" + mouse_opaque="false" > diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml index c34aec1bf0..95f5cf2ecd 100644 --- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml @@ -6,5 +6,14 @@ item_top_pad="4" selection_image="Rounded_Square" > - + -- cgit v1.2.3 From babeae140225c6ce39a42bae09e38285b63744bf Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 12 Jul 2011 15:12:54 -0700 Subject: EXP-941 FIX Text and URL change to the Age Verification dialog --- indra/newview/skins/default/xui/en/notifications.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 4ef64269e8..3ff2d1e657 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4991,19 +4991,19 @@ Would you like to automatically wear the clothing you are about to create? name="NotAgeVerified" type="alertmodal"> fail -You must be age-verified to visit this area. Do you want to go to the [SECOND_LIFE] website and verify your age? + To access adult content and areas in Second Life you must be at least 18 years old. Please visit our age verification page to confirm you are over 18. +Note this will launch your web browser. -[_URL] + [_URL] confirm - https://secondlife.com/account/verification.php + notext="Cancel" + yestext="Go to Age Verification"/> Date: Tue, 12 Jul 2011 15:23:46 -0700 Subject: EXP-941 FIX Text and URL change to the Age Verification dialog fixed some formatting --- indra/newview/skins/default/xui/en/notifications.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 3ff2d1e657..d790908659 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4991,10 +4991,10 @@ Would you like to automatically wear the clothing you are about to create? name="NotAgeVerified" type="alertmodal"> fail - To access adult content and areas in Second Life you must be at least 18 years old. Please visit our age verification page to confirm you are over 18. +To access adult content and areas in Second Life you must be at least 18 years old. Please visit our age verification page to confirm you are over 18. Note this will launch your web browser. - [_URL] +[_URL] confirm https://secondlife.com/account/verification.php -- cgit v1.2.3 From fa3f4d11665af44234f8e0ae3e8d8c0ce31d356d Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 12 Jul 2011 20:58:30 -0700 Subject: EXP-880 FIX Enable navigation chrome for Search floater search floater derives from floater_web_content all web content now uses floater_web_content instead of media_browser --- indra/newview/llavataractions.cpp | 6 +- indra/newview/llfloatersearch.cpp | 60 +++++------ indra/newview/llfloatersearch.h | 19 ++-- indra/newview/llfloaterwebcontent.cpp | 110 ++++++++++++--------- indra/newview/llfloaterwebcontent.h | 23 ++++- indra/newview/llnavigationbar.cpp | 2 +- indra/newview/llviewerfloaterreg.cpp | 2 +- indra/newview/llweb.cpp | 31 +++--- indra/newview/llworldmapview.cpp | 4 +- .../skins/default/xui/en/floater_search.xml | 71 ------------- 10 files changed, 145 insertions(+), 183 deletions(-) delete mode 100644 indra/newview/skins/default/xui/en/floater_search.xml (limited to 'indra/newview') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 8344b08bfb..48827676cd 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -316,7 +316,11 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa // PROFILES: open in webkit window const bool show_chrome = false; static LLCachedControl profile_rect(gSavedSettings, "WebProfileRect"); - LLFloaterWebContent::create(url, "", agent_id.asString(), show_chrome, profile_rect); + LLFloaterWebContent::create(LLFloaterWebContent::Params(). + url(url). + id(agent_id). + show_chrome(show_chrome). + preferred_media_size(profile_rect)); } // static diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index d5806e375c..e9710c41a1 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -70,21 +70,25 @@ public: } // create the LLSD arguments for the search floater - LLSD args; - args["category"] = category; - args["id"] = LLURI::unescape(search_text); + LLFloaterSearch::Params p; + p.category = category; + p.query = LLURI::unescape(search_text); // open the search floater and perform the requested search - LLFloaterReg::showInstance("search", args); + LLFloaterReg::showInstance("search", p); return true; } }; LLSearchHandler gSearchHandler; +LLFloaterSearch::_Params::_Params() +: category("category", ""), + query("query") +{} + + LLFloaterSearch::LLFloaterSearch(const LLSD& key) : - LLFloater(key), - LLViewerMediaObserver(), - mBrowser(NULL), + LLFloaterWebContent(key), mSearchGodLevel(0) { // declare a map that transforms a category name into @@ -102,53 +106,43 @@ LLFloaterSearch::LLFloaterSearch(const LLSD& key) : BOOL LLFloaterSearch::postBuild() { - mBrowser = getChild("browser"); - mBrowser->addObserver(this); + LLFloaterWebContent::postBuild(); + mWebBrowser->addObserver(this); return TRUE; } void LLFloaterSearch::onOpen(const LLSD& key) { + LLFloaterWebContent::onOpen(key); search(key); } void LLFloaterSearch::onClose(bool app_quitting) { + LLFloaterWebContent::onClose(app_quitting); // tear down the web view so we don't show the previous search // result when the floater is opened next time destroy(); } -void LLFloaterSearch::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event) -{ - switch (event) - { - case MEDIA_EVENT_NAVIGATE_BEGIN: - getChild("status_text")->setValue(getString("loading_text")); - break; - - case MEDIA_EVENT_NAVIGATE_COMPLETE: - getChild("status_text")->setValue(getString("done_text")); - break; - - default: - break; - } -} - void LLFloaterSearch::godLevelChanged(U8 godlevel) { // search results can change based upon god level - if the user // changes god level, then give them a warning (we don't refresh // the search as this might undo any page navigation or // AJAX-driven changes since the last search). - getChildView("refresh_search")->setVisible( (godlevel != mSearchGodLevel)); + + //FIXME: set status bar text + + //getChildView("refresh_search")->setVisible( (godlevel != mSearchGodLevel)); } void LLFloaterSearch::search(const LLSD &key) { - if (! mBrowser) + Params p(key); + + if (! mWebBrowser || !p.validateBlock()) { return; } @@ -159,10 +153,9 @@ void LLFloaterSearch::search(const LLSD &key) // work out the subdir to use based on the requested category LLSD subs; - std::string category = key.has("category") ? key["category"].asString() : ""; - if (mCategoryPaths.has(category)) + if (mCategoryPaths.has(p.category)) { - subs["CATEGORY"] = mCategoryPaths[category].asString(); + subs["CATEGORY"] = mCategoryPaths[p.category].asString(); } else { @@ -170,8 +163,7 @@ void LLFloaterSearch::search(const LLSD &key) } // add the search query string - std::string search_text = key.has("id") ? key["id"].asString() : ""; - subs["QUERY"] = LLURI::escape(search_text); + subs["QUERY"] = LLURI::escape(p.query); // add the permissions token that login.cgi gave us // We use "search_token", and fallback to "auth_token" if not present. @@ -207,5 +199,5 @@ void LLFloaterSearch::search(const LLSD &key) url = LLWeb::expandURLSubstitutions(url, subs); // and load the URL in the web view - mBrowser->navigateTo(url, "text/html"); + mWebBrowser->navigateTo(url, "text/html"); } diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h index ba4dc4c0fa..2c59fa6d5d 100644 --- a/indra/newview/llfloatersearch.h +++ b/indra/newview/llfloatersearch.h @@ -28,7 +28,7 @@ #ifndef LL_LLFLOATERSEARCH_H #define LL_LLFLOATERSEARCH_H -#include "llfloater.h" +#include "llfloaterwebcontent.h" #include "llviewermediaobserver.h" #include @@ -43,10 +43,19 @@ class LLMediaCtrl; /// so that the user can click on teleport links in search results. /// class LLFloaterSearch : - public LLFloater, - public LLViewerMediaObserver + public LLFloaterWebContent { public: + struct _Params : public LLInitParam::Block<_Params, LLFloaterWebContent::_Params> + { + Optional category; + Optional query; + + _Params(); + }; + + typedef LLSDParamAdapter<_Params> Params; + LLFloaterSearch(const LLSD& key); /// show the search floater with a new search @@ -70,10 +79,6 @@ public: private: /*virtual*/ BOOL postBuild(); - // inherited from LLViewerMediaObserver - /*virtual*/ void handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event); - - LLMediaCtrl *mBrowser; LLSD mCategoryPaths; U8 mSearchGodLevel; }; diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 43eecbf048..4cc29267da 100644 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -40,8 +40,16 @@ #include "llfloaterwebcontent.h" +LLFloaterWebContent::_Params::_Params() +: url("url"), + target("target"), + id("id"), + show_chrome("show_chrome", true), + preferred_media_size("preferred_media_size") +{} + LLFloaterWebContent::LLFloaterWebContent( const LLSD& key ) - : LLFloater( key ) +: LLFloater( key ) { mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this )); mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this )); @@ -75,6 +83,12 @@ BOOL LLFloaterWebContent::postBuild() return TRUE; } +bool LLFloaterWebContent::matchesKey(const LLSD& key) +{ + return key["target"].asString() == mKey["target"].asString(); +} + + void LLFloaterWebContent::initializeURLHistory() { // start with an empty list @@ -99,30 +113,23 @@ void LLFloaterWebContent::initializeURLHistory() } //static -void LLFloaterWebContent::create( const std::string &url, const std::string& target, const std::string& uuid, bool show_chrome, const LLRect& preferred_media_size) +void LLFloaterWebContent::create( Params p) { - lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl; + lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id().asString() << llendl; - std::string tag = target; + if (!p.id.isProvided()) + { + p.id = LLUUID::generateNewID(); + } - if(target.empty() || target == "_blank") + if(!p.target.isProvided() || p.target() == "_blank") { - if(!uuid.empty()) - { - tag = uuid; - } - else - { - // create a unique tag for this instance - LLUUID id; - id.generate(); - tag = id.asString(); - } + p.target = p.id().asString(); } S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit"); - if(LLFloaterReg::findInstance("web_content", tag) != NULL) + if(LLFloaterReg::findInstance("web_content", p.target()) != NULL) { // There's already a web browser for this tag, so we won't be opening a new window. } @@ -136,7 +143,7 @@ void LLFloaterWebContent::create( const std::string &url, const std::string& tar for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++) { - lldebugs << " " << (*iter)->getKey() << llendl; + lldebugs << " " << (*iter)->getKey()["target"] << llendl; } if(instances.size() >= (size_t)browser_window_limit) @@ -146,30 +153,7 @@ void LLFloaterWebContent::create( const std::string &url, const std::string& tar } } - LLFloaterWebContent *browser = dynamic_cast (LLFloaterReg::showInstance("web_content", tag)); - llassert(browser); - if(browser) - { - browser->mUUID = uuid; - - // tell the browser instance to load the specified URL - browser->open_media(url, target); - LLViewerMedia::proxyWindowOpened(target, uuid); - - browser->getChild("status_bar")->setVisible(show_chrome); - browser->getChild("nav_controls")->setVisible(show_chrome); - - if (!show_chrome) - { - browser->setResizeLimits(100, 100); - } - - if (!preferred_media_size.isEmpty()) - { - //ignore x, y for now - browser->geometryChanged(browser->getRect().mLeft, browser->getRect().mBottom, preferred_media_size.getWidth(), preferred_media_size.getHeight()); - } - } + LLFloaterReg::showInstance("web_content", p); } //static @@ -227,13 +211,45 @@ void LLFloaterWebContent::geometryChanged(S32 x, S32 y, S32 width, S32 height) setShape(geom); } -void LLFloaterWebContent::open_media(const std::string& web_url, const std::string& target) +void LLFloaterWebContent::open_media(const Params& p) { // Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin. - mWebBrowser->setHomePageUrl(web_url, "text/html"); - mWebBrowser->setTarget(target); - mWebBrowser->navigateTo(web_url, "text/html"); - set_current_url(web_url); + LLViewerMedia::proxyWindowOpened(p.target(), p.id().asString()); + mWebBrowser->setHomePageUrl(p.url, "text/html"); + mWebBrowser->setTarget(p.target); + mWebBrowser->navigateTo(p.url, "text/html"); + set_current_url(p.url); + + getChild("status_bar")->setVisible(p.show_chrome); + getChild("nav_controls")->setVisible(p.show_chrome); + + if (!p.show_chrome) + { + setResizeLimits(100, 100); + } + + if (!p.preferred_media_size().isEmpty()) + { + //ignore x, y for now + geometryChanged(getRect().mLeft, getRect().mBottom, p.preferred_media_size().getWidth(), p.preferred_media_size().getHeight()); + } + +} + +void LLFloaterWebContent::onOpen(const LLSD& key) +{ + Params params(key); + + if (!params.validateBlock()) + { + closeFloater(); + return; + } + + mUUID = params.id().asString(); + + // tell the browser instance to load the specified URL + open_media(params); } //virtual diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h index 56b6ef12c8..2cb6bd0831 100644 --- a/indra/newview/llfloaterwebcontent.h +++ b/indra/newview/llfloaterwebcontent.h @@ -29,6 +29,7 @@ #include "llfloater.h" #include "llmediactrl.h" +#include "llsdparam.h" class LLMediaCtrl; class LLComboBox; @@ -42,20 +43,37 @@ class LLFloaterWebContent : { public: LOG_CLASS(LLFloaterWebContent); + + struct _Params : public LLInitParam::Block<_Params> + { + Optional url, + target; + Optional id; + Optional show_chrome; + Optional preferred_media_size; + + _Params(); + }; + + typedef LLSDParamAdapter<_Params> Params; + LLFloaterWebContent(const LLSD& key); void initializeURLHistory(); - static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null, bool show_chrome = true, const LLRect& preferred_media_size = LLRect() ); + static void create(Params); static void closeRequest(const std::string &uuid); static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height); void geometryChanged(S32 x, S32 y, S32 width, S32 height); /* virtual */ BOOL postBuild(); + /* virtual */ void onOpen(const LLSD& key); + /* virtual */ bool matchesKey(const LLSD& key); /* virtual */ void onClose(bool app_quitting); /* virtual */ void draw(); +protected: // inherited from LLViewerMediaObserver /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); @@ -66,8 +84,7 @@ public: void onEnterAddress(); void onPopExternal(); -private: - void open_media(const std::string& media_url, const std::string& target); + void open_media(const Params& ); void set_current_url(const std::string& url); LLMediaCtrl* mWebBrowser; diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index b8832dfd8e..9d54ad7463 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -716,7 +716,7 @@ void LLNavigationBar::handleLoginComplete() void LLNavigationBar::invokeSearch(std::string search_text) { - LLFloaterReg::showInstance("search", LLSD().with("category", "all").with("id", LLSD(search_text))); + LLFloaterReg::showInstance("search", LLSD().with("category", "all").with("query", LLSD(search_text))); } void LLNavigationBar::clearHistoryCache() diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 6ae8e79be4..0e58f54f8b 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -274,7 +274,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("snapshot", "floater_snapshot.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); - LLFloaterReg::add("search", "floater_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); + LLFloaterReg::add("search", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterUIPreviewUtil::registerFloater(); LLFloaterReg::add("upload_anim", "floater_animation_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build, "upload"); diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index b73017a51a..e4cdfaaaaf 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -81,19 +81,20 @@ void LLWeb::initClass() // static void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid) { - if(target == "_internal") - { - // Force load in the internal browser, as if with a blank target. - loadURLInternal(url, "", uuid); - } - else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external")) - { - loadURLExternal(url); - } - else - { - loadURLInternal(url, target, uuid); - } + loadWebURL(url, target, uuid); + //if(target == "_internal") + //{ + // // Force load in the internal browser, as if with a blank target. + // loadURLInternal(url, "", uuid); + //} + //else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external")) + //{ + // loadURLExternal(url); + //} + //else + //{ + // loadURLInternal(url, target, uuid); + //} } // static @@ -124,17 +125,15 @@ void LLWeb::loadURLInternal(const std::string &url, const std::string& target, c // Explicitly open a Web URL using the Web content floater void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid) { - LLFloaterWebContent::create(url, target, uuid); + LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(LLUUID(uuid))); } - // static void LLWeb::loadURLExternal(const std::string& url, const std::string& uuid) { loadURLExternal(url, true, uuid); } - // static void LLWeb::loadURLExternal(const std::string& url, bool async, const std::string& uuid) { diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 8cdb615686..265d5dc801 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -1752,13 +1752,13 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask ) case MAP_ITEM_LAND_FOR_SALE_ADULT: { LLFloaterReg::hideInstance("world_map"); - LLFloaterReg::showInstance("search", LLSD().with("category", "destinations").with("id", id)); + LLFloaterReg::showInstance("search", LLSD().with("category", "destinations").with("query", id)); break; } case MAP_ITEM_CLASSIFIED: { LLFloaterReg::hideInstance("world_map"); - LLFloaterReg::showInstance("search", LLSD().with("category", "classifieds").with("id", id)); + LLFloaterReg::showInstance("search", LLSD().with("category", "classifieds").with("query", id)); break; } default: diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml deleted file mode 100644 index 8770ede7e9..0000000000 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - Loading... - - - Done - - - - - - - Redo search to reflect current God level - - - - -- cgit v1.2.3 From ce45e5542a9d717caae83fe608ee5644e231d6a3 Mon Sep 17 00:00:00 2001 From: Leslie Linden Date: Wed, 13 Jul 2011 11:48:09 -0700 Subject: Disabled the fresh item count. The badge on the suitcase button now once again reflects the total item count in the Received Items folder and the New badge is no longer initialized and will not be displayed. Reviewed by Richard. --- indra/newview/llpanelmarketplaceinbox.cpp | 3 --- indra/newview/llpanelmarketplaceinboxinventory.cpp | 4 ++++ indra/newview/llpanelmarketplaceinboxinventory.h | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 3accc43ab6..dd3daf5fbb 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -37,9 +37,6 @@ #include "llviewercontrol.h" -#define SUPPORTING_FRESH_ITEM_COUNT 1 - - static LLRegisterPanelClassWrapper t_panel_marketplace_inbox("panel_marketplace_inbox"); const LLPanelMarketplaceInbox::Params& LLPanelMarketplaceInbox::getDefaultParams() diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index 8542ea2ae4..4ea6e98070 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -143,7 +143,9 @@ LLInboxFolderViewFolder::LLInboxFolderViewFolder(const Params& p) , LLBadgeOwner(getHandle()) , mFresh(true) { +#if SUPPORTING_FRESH_ITEM_COUNT initBadgeParams(p.new_badge()); +#endif } LLInboxFolderViewFolder::~LLInboxFolderViewFolder() @@ -166,12 +168,14 @@ time_t LLInboxFolderViewFolder::getCreationDate() const // virtual void LLInboxFolderViewFolder::draw() { +#if SUPPORTING_FRESH_ITEM_COUNT if (!badgeHasParent()) { addBadgeToParentPanel(); } setBadgeVisibility(mFresh); +#endif LLFolderViewFolder::draw(); } diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h index 899e459896..e12508cff4 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.h +++ b/indra/newview/llpanelmarketplaceinboxinventory.h @@ -32,6 +32,11 @@ #include "llinventorypanel.h" #include "llfolderviewitem.h" + +#define SUPPORTING_FRESH_ITEM_COUNT 0 + + + class LLInboxInventoryPanel : public LLInventoryPanel { public: -- cgit v1.2.3 From 42c6949e304b1a0ba19251ba889132796adb1295 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Wed, 13 Jul 2011 16:06:31 -0700 Subject: EXP-941 FIX text and url change to the age verification dialog tweaked url --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d790908659..2ba9393eec 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4997,7 +4997,7 @@ Note this will launch your web browser. [_URL] confirm - https://secondlife.com/account/verification.php + https://secondlife.com/my/account/verification.php Date: Wed, 13 Jul 2011 17:59:53 -0700 Subject: EXP-1009 WIP Teleport links from Search floater and destination guide in viewer fail with intrusted browser error in viewer --- indra/newview/llfloatersearch.cpp | 7 +++++-- indra/newview/llfloatersearch.h | 4 ++-- indra/newview/llfloaterwebcontent.cpp | 9 +++++++-- indra/newview/llfloaterwebcontent.h | 6 ++++-- indra/newview/llmediactrl.cpp | 9 +++++++++ indra/newview/llmediactrl.h | 4 +++- indra/newview/skins/default/xui/en/floater_web_content.xml | 5 +++++ 7 files changed, 35 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index e9710c41a1..ce0bba802d 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -84,10 +84,13 @@ LLSearchHandler gSearchHandler; LLFloaterSearch::_Params::_Params() : category("category", ""), query("query") -{} +{ + trusted_content = true; + allow_address_entry = false; +} -LLFloaterSearch::LLFloaterSearch(const LLSD& key) : +LLFloaterSearch::LLFloaterSearch(const Params& key) : LLFloaterWebContent(key), mSearchGodLevel(0) { diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h index 2c59fa6d5d..a4043b2353 100644 --- a/indra/newview/llfloatersearch.h +++ b/indra/newview/llfloatersearch.h @@ -46,7 +46,7 @@ class LLFloaterSearch : public LLFloaterWebContent { public: - struct _Params : public LLInitParam::Block<_Params, LLFloaterWebContent::_Params> + struct _Params : public LLInitParam::Block<_Params, LLFloaterWebContent::Params> { Optional category; Optional query; @@ -56,7 +56,7 @@ public: typedef LLSDParamAdapter<_Params> Params; - LLFloaterSearch(const LLSD& key); + LLFloaterSearch(const Params& key); /// show the search floater with a new search /// see search() for details on the key parameter. diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 4cc29267da..c7c6857a47 100644 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -45,10 +45,12 @@ LLFloaterWebContent::_Params::_Params() target("target"), id("id"), show_chrome("show_chrome", true), - preferred_media_size("preferred_media_size") + allow_address_entry("allow_address_entry", true), + preferred_media_size("preferred_media_size"), + trusted_content("trusted_content", false) {} -LLFloaterWebContent::LLFloaterWebContent( const LLSD& key ) +LLFloaterWebContent::LLFloaterWebContent( const Params& key ) : LLFloater( key ) { mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this )); @@ -218,10 +220,12 @@ void LLFloaterWebContent::open_media(const Params& p) mWebBrowser->setHomePageUrl(p.url, "text/html"); mWebBrowser->setTarget(p.target); mWebBrowser->navigateTo(p.url, "text/html"); + set_current_url(p.url); getChild("status_bar")->setVisible(p.show_chrome); getChild("nav_controls")->setVisible(p.show_chrome); + getChild("address")->setEnabled(p.allow_address_entry && !p.trusted_content); if (!p.show_chrome) { @@ -247,6 +251,7 @@ void LLFloaterWebContent::onOpen(const LLSD& key) } mUUID = params.id().asString(); + mWebBrowser->setTrustedContent(params.trusted_content); // tell the browser instance to load the specified URL open_media(params); diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h index 2cb6bd0831..3a99d49b5a 100644 --- a/indra/newview/llfloaterwebcontent.h +++ b/indra/newview/llfloaterwebcontent.h @@ -49,7 +49,9 @@ public: Optional url, target; Optional id; - Optional show_chrome; + Optional show_chrome, + allow_address_entry, + trusted_content; Optional preferred_media_size; _Params(); @@ -57,7 +59,7 @@ public: typedef LLSDParamAdapter<_Params> Params; - LLFloaterWebContent(const LLSD& key); + LLFloaterWebContent(const Params& key); void initializeURLHistory(); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 03ccabc994..1eb786f433 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -1164,3 +1164,12 @@ void LLMediaCtrl::hideNotification() mWindowShade->hide(); } } + +void LLMediaCtrl::setTrustedContent(bool trusted) +{ + mTrusted = trusted; + if (mMediaSource) + { + mMediaSource->setTrustedBrowser(trusted); + } +} diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 28666e620f..6833453616 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -149,6 +149,8 @@ public: void showNotification(boost::shared_ptr notify); void hideNotification(); + void setTrustedContent(bool trusted); + // over-rides virtual BOOL handleKeyHere( KEY key, MASK mask); virtual void handleVisibilityChange ( BOOL new_visibility ); @@ -176,7 +178,7 @@ public: LLViewBorder* mBorder; bool mFrequentUpdates; bool mForceUpdate; - const bool mTrusted; + bool mTrusted; std::string mHomePageUrl; std::string mHomePageMimeType; std::string mCurrentNavUrl; diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index 69e6057556..0eda9ae62a 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -40,6 +40,7 @@ image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" + chrome="true" hover_glow_amount="0.15" tool_tip="Navigate back" follows="left|top" @@ -58,6 +59,7 @@ image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" + chrome="true" tool_tip="Navigate forward" follows="left|top" height="22" @@ -75,6 +77,7 @@ image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" + chrome="true" tool_tip="Stop navigation" enabled="true" follows="left|top" @@ -93,6 +96,7 @@ image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" + chrome="true" tool_tip="Reload page" follows="left|top" height="22" @@ -137,6 +141,7 @@ image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" + chrome="true" tool_tip="Open current URL in your desktop browser" follows="right|top" enabled="true" -- cgit v1.2.3