diff options
| author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-14 13:33:12 -0800 | 
|---|---|---|
| committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-14 13:33:12 -0800 | 
| commit | 23a266521ead539cb3e8c2c76e7ead46847b70ca (patch) | |
| tree | e53fd7c529e406e65255611bc587314759fa96b8 | |
| parent | 1a5e2be99c7b186135fdc541e9df71f337378397 (diff) | |
| parent | 86d1b0b67eb8901c269f7710606ef97c84732348 (diff) | |
merge.
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 30 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 12 | ||||
| -rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterabout.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llinventoryobserver.cpp | 35 | ||||
| -rw-r--r-- | indra/newview/llmediactrl.cpp | 45 | ||||
| -rw-r--r-- | indra/newview/llmediactrl.h | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/de/floater_buy_currency.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/de/floater_help_browser.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/es/floater_buy_currency.xml | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/fr/floater_buy_currency.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/fr/floater_help_browser.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/it/floater_buy_currency.xml | 9 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/floater_buy_currency.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/pt/floater_buy_currency.xml | 3 | ||||
| -rw-r--r-- | install.xml | 12 | 
17 files changed, 127 insertions, 50 deletions
| diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index ed8d10a88c..3d2eaed5c5 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -37,6 +37,8 @@  #include "llpluginclassmedia.h"  #include "llpluginmessageclasses.h" +#include "llqtwebkit.h" +  static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;  static int nextPowerOf2( int value ) @@ -124,7 +126,7 @@ void LLPluginClassMedia::reset()  	mCanPaste = false;  	mMediaName.clear();  	mMediaDescription.clear(); -	mBackgroundColor = LLColor4::white; +	mBackgroundColor = LLColor4(1.0f, 1.0f, 1.0f, 1.0f);  	// media_browser class  	mNavigateURI.clear(); @@ -134,6 +136,9 @@ void LLPluginClassMedia::reset()  	mHistoryForwardAvailable = false;  	mStatusText.clear();  	mProgressPercent = 0;	 +	mClickURL.clear(); +	mClickTarget.clear(); +	mClickTargetType = TARGET_NONE;  	// media_time class  	mCurrentTime = 0.0f; @@ -669,6 +674,26 @@ void LLPluginClassMedia::paste()  	sendMessage(message);  } +LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type) +{ +	// convert a LinkTargetType value from llqtwebkit to an ETargetType +	// so that we don't expose the llqtwebkit header in viewer code +	switch (target_type) +	{ +	case LinkTargetType::LTT_TARGET_NONE: +		return LLPluginClassMedia::TARGET_NONE; + +	case LinkTargetType::LTT_TARGET_BLANK: +		return LLPluginClassMedia::TARGET_BLANK; + +	case LinkTargetType::LTT_TARGET_EXTERNAL: +		return LLPluginClassMedia::TARGET_EXTERNAL; + +	default: +		return LLPluginClassMedia::TARGET_OTHER; +	} +} +  /* virtual */   void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  { @@ -921,12 +946,15 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  		{  			mClickURL = message.getValue("uri");  			mClickTarget = message.getValue("target"); +			U32 target_type = message.getValueU32("target_type"); +			mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type);  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);  		}  		else if(message_name == "click_nofollow")  		{  			mClickURL = message.getValue("uri");  			mClickTarget.clear(); +			mClickTargetType = TARGET_NONE;  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);  		}  		else diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 5a1928ab1d..ebb9099576 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -214,6 +214,17 @@ public:  	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF  	std::string getClickTarget() const { return mClickTarget; }; +	typedef enum  +	{ +		TARGET_NONE,        // empty href target string +		TARGET_BLANK,       // target to open link in user's preferred browser +		TARGET_EXTERNAL,    // target to open link in external browser +		TARGET_OTHER        // nonempty and unsupported target type +	}ETargetType; + +	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF +	ETargetType getClickTargetType() const { return mClickTargetType; }; +  	std::string getMediaName() const { return mMediaName; };  	std::string getMediaDescription() const { return mMediaDescription; }; @@ -344,6 +355,7 @@ protected:  	std::string		mLocation;  	std::string		mClickURL;  	std::string		mClickTarget; +	ETargetType     mClickTargetType;  	/////////////////////////////////////////  	// media_time class diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index a0336f6156..084cdd9561 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -429,6 +429,7 @@ private:  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href");  		message.setValue("uri", event.getStringValue());  		message.setValue("target", event.getStringValue2()); +		message.setValueU32("target_type", event.getLinkType());  		sendMessage(message);  	} diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index aa343b2f69..ef69f39ad2 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -269,7 +269,7 @@ LLSD LLFloaterAbout::getInfo()  	info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : LLTrans::getString("NotConnected");  	// TODO: Implement media plugin version query -	info["QT_WEBKIT_VERSION"] = "4.5.2 (version number hard-coded)"; +	info["QT_WEBKIT_VERSION"] = "4.6 (version number hard-coded)";  	if (gPacketsIn > 0)  	{ diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 711114173c..a468a9a95c 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2001,14 +2001,16 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const  		}  		if(!accounted)  		{ -			lldebugs << "No accounting for: '" << cat->getName() << "' " +			// Error condition, this means that the category did not register that +			// it got new descendents (perhaps because it is still being loaded) +			// which means its descendent count will be wrong. +			llwarns << "Accounting failed for '" << cat->getName() << "' version:"  					 << version << llendl;  		}  	}  	else  	{ -		llwarns << "No category found for update " << update.mCategoryID -				<< llendl; +		llwarns << "No category found for update " << update.mCategoryID << llendl;  	}  } diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 2d9ea21b5f..2fb8aea4e9 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -311,10 +311,10 @@ bool LLInventoryFetchDescendentsObserver::isEverythingComplete() const  bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* cat)  { -	S32 version = cat->getVersion(); -	S32 descendents = cat->getDescendentCount(); -	if((LLViewerInventoryCategory::VERSION_UNKNOWN == version) -	   || (LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN == descendents)) +	const S32 version = cat->getVersion(); +	const S32 expected_num_descendents = cat->getDescendentCount(); +	if ((version == LLViewerInventoryCategory::VERSION_UNKNOWN) || +		(expected_num_descendents == LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN))  	{  		return false;  	} @@ -325,15 +325,28 @@ bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory*  	gInventory.getDirectDescendentsOf(cat->getUUID(), cats, items);  	if(!cats || !items)  	{ -		// bit of a hack - pretend we're done if they are gone or -		// incomplete. should never know, but it would suck if this -		// kept tight looping because of a corrupt memory state. +		llwarns << "Category '" << cat->getName() << "' descendents corrupted, fetch failed." << llendl; +		// NULL means the call failed -- cats/items map doesn't exist (note: this does NOT mean +		// that the cat just doesn't have any items or subfolders). +		// Unrecoverable, so just return done so that this observer can be cleared +		// from memory.  		return true;  	} -	S32 known = cats->count() + items->count(); -	if(descendents == known) +	const S32 current_num_known_descendents = cats->count() + items->count(); +	 +	// Got the number of descendents that we were expecting, so we're done. +	if (current_num_known_descendents == expected_num_descendents) +	{ +		return true; +	} + +	// Error condition, but recoverable.  This happens if something was added to the +	// category before it was initialized, so accountForUpdate didn't update descendent +	// count and thus the category thinks it has fewer descendents than it actually has. +	if (current_num_known_descendents >= expected_num_descendents)  	{ -		// hey - we're done. +		llwarns << "Category '" << cat->getName() << "' expected descendentcount:" << expected_num_descendents << " descendents but got descendentcount:" << current_num_known_descendents << llendl; +		cat->setDescendentCount(current_num_known_descendents);  		return true;  	}  	return false; @@ -352,7 +365,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)  				continue;  			}  			if(item->isComplete()) -			{ +		{	  				mCompleteItems.push_back(*it);  				it = mIncompleteItems.erase(it);  				continue; diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 6b0f9b709d..87ebce1d34 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -84,7 +84,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :  	mHomePageUrl( "" ),  	mIgnoreUIScale( true ),  	mAlwaysRefresh( false ), -	mExternalUrl( "" ),  	mMediaSource( 0 ),  	mTakeFocusOnClick( true ),  	mCurrentNavUrl( "" ), @@ -877,9 +876,27 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD  	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);  	if ( 0 == option )  	{ -		// open in external browser because we don't support  -		// creation of our own secondary browser windows -		LLWeb::loadURLExternal( notification["payload"]["external_url"].asString() ); +		LLSD payload = notification["payload"]; +		std::string url = payload["url"].asString(); +		S32 target_type = payload["target_type"].asInteger(); + +		switch (target_type) +		{ +		case LLPluginClassMedia::TARGET_EXTERNAL: +			// load target in an external browser +			LLWeb::loadURLExternal(url); +			break; + +		case LLPluginClassMedia::TARGET_BLANK: +			// load target in the user's preferred browser +			LLWeb::loadURL(url); +			break; + +		default: +			// unsupported link target - shouldn't happen +			LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; +			break; +		}  	}  	return false;  } @@ -993,20 +1010,18 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)  void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )  {  	// retrieve the event parameters -	std::string target = self->getClickTarget();  	std::string url = self->getClickURL(); +	U32 target_type = self->getClickTargetType(); -	// if there is a value for the target -	if ( !target.empty() ) +	// is there is a target specified for the link? +	if (target_type == LLPluginClassMedia::TARGET_EXTERNAL || +		target_type == LLPluginClassMedia::TARGET_BLANK)  	{ -		if ( target == "_external" )		 -		{ -			mExternalUrl = url; -			LLSD payload; -			payload["external_url"] = mExternalUrl; -			LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); -			return; -		} +		LLSD payload; +		payload["url"] = url; +		payload["target_type"] = LLSD::Integer(target_type); +		LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); +		return;  	}  	const std::string protocol1( "http://" ); diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 8f9e6e7179..b0aca3cfa4 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -182,7 +182,6 @@ public:  		bool mOpenLinksInInternalBrowser;  		bool mTrusted;  		std::string mHomePageUrl; -		std::string mExternalUrl;  		std::string mCurrentNavUrl;  		bool mIgnoreUIScale;  		bool mAlwaysRefresh; diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 3c336cc40b..c320e796c2 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -46,7 +46,7 @@  		[AMT] L$
  	</text>
  	<text name="currency_links">
 -		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE payment method] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE exchange rate]
  	</text>
  	<text name="exchange_rate_note">
  		Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen.
 diff --git a/indra/newview/skins/default/xui/de/floater_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml index 53bddcced1..2344d6f412 100644 --- a/indra/newview/skins/default/xui/de/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_help_browser.xml @@ -1,10 +1,10 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <floater name="floater_help_browser" title="HILFE-BROWSER">
  	<floater.string name="home_page_url">
 -		http://www.secondlife.com
 +		http://de.secondlife.com
  	</floater.string>
  	<floater.string name="support_page_url">
 -		http://support.secondlife.com
 +		http://de.secondlife.com/support
  	</floater.string>
  	<layout_stack name="stack1">
  		<layout_panel name="external_controls">
 diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index eb25493adc..1ecb813dd1 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml @@ -52,6 +52,9 @@  	<text name="total_amount">  		[AMT] L$  	</text> +	<text name="currency_links"> +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=es-ES payment method] | [http://www.secondlife.com/my/account/currency.php?lang=es-ES currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=es-ES exchange rate] +	</text>  	<text name="purchase_warning_repurchase" right="-10">  		Confirmando esta compra sólo compra la moneda.  Tendrá que intentar de nuevo la operación. diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml index e6a49cbc6f..9a92c446f2 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml @@ -46,12 +46,12 @@  		[AMT] L$
  	</text>
  	<text name="currency_links">
 -		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR exchange rate]
  	</text>
  	<text name="exchange_rate_note">
  		Saisissez à nouveau le montant pour voir le taux de change actuel.
  	</text>
 -	<text bottom_delta="-64" height="48" name="purchase_warning_repurchase" right="-10">
 +	<text name="purchase_warning_repurchase">
  		La confirmation de cet achat n'achète que des L$, pas l'objet.
  	</text>
  	<text bottom_delta="16" name="purchase_warning_notenough">
 diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml index 0eb3ea3d21..20894d42fc 100644 --- a/indra/newview/skins/default/xui/fr/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/fr/floater_help_browser.xml @@ -1,10 +1,10 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <floater name="floater_help_browser" title="NAVIGATEUR D'AIDE">
  	<floater.string name="home_page_url">
 -		http://www.secondlife.com
 +		http://fr.secondlife.com
  	</floater.string>
  	<floater.string name="support_page_url">
 -		http://support.secondlife.com
 +		http://fr.secondlife.com/support
  	</floater.string>
  	<layout_stack name="stack1">
  		<layout_panel name="external_controls">
 diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index a22850bc4b..8a59764251 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -52,10 +52,11 @@  	<text name="total_amount">  		[AMT]L$  	</text> -	<text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> -		Confermando questa operazione si acquisterà solo -la valuta. Per acquistare il bene, dovrai riprovare -l'operazione nuovamente. +	<text name="currency_links"> +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=it-IT payment method] | [http://www.secondlife.com/my/account/currency.php?lang=it-IT currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=it-IT exchange rate] +	</text> +	<text name="purchase_warning_repurchase"> +		Confermando questa operazione si acquisterà solo la valuta. Per acquistare il bene, dovrai riprovare l'operazione nuovamente.  	</text>  	<text name="purchase_warning_notenough" bottom_delta="16">  		Non stai comprando abbastanza denaro. diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index 03cd0f391a..9d49a38982 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -46,7 +46,7 @@  		L$ [AMT]
  	</text>
  	<text name="currency_links">
 -		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com exchange rate]
 +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate]
  	</text>
  	<text name="exchange_rate_note">
  		金額を再入力して最新換算レートを確認します。
 diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml index aac8438fdc..f17c069ecf 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml @@ -52,6 +52,9 @@  	<text name="total_amount">  		L$ [AMT]  	</text> +	<text name="currency_links"> +		[http://www.secondlife.com/my/account/payment_method_management.php?lang=pt-BR payment method] | [http://www.secondlife.com/my/account/currency.php?lang=pt-BR currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=pt-BR exchange rate] +	</text>  	<text name="purchase_warning_repurchase">  		Confirmando esta compra só compra a moeda.  Você precisará tentar novamente a operação. diff --git a/install.xml b/install.xml index 62a1061049..aa25744f15 100644 --- a/install.xml +++ b/install.xml @@ -948,23 +948,23 @@ anguage Infrstructure (CLI) international standard</string>            <key>darwin</key>            <map>              <key>md5sum</key> -            <string>5362a53488693f9bd7d9083758af25eb</string> +            <string>2eb58f544c0d912aa382de2c947be7f1</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20091218.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100104.tar.bz2</uri>            </map>            <key>linux</key>            <map>              <key>md5sum</key> -            <string>09674cbae982e7e7f6ebc7e1d06580e8</string> +            <string>c4c40fca14a8bd32096f8a27c75c526f</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091216.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100105c.tar.bz2</uri>            </map>            <key>windows</key>            <map>              <key>md5sum</key> -            <string>4dd305f2ce38b2e55a2014ad3a2de34d</string> +            <string>b50db4fdb833111e1e679188e4cb5815</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091218.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100104.tar.bz2</uri>            </map>          </map>        </map> | 
