diff options
Diffstat (limited to 'indra')
31 files changed, 6 insertions, 4170 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 694e89ab99..04f6c9b7f0 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -208,7 +208,6 @@ set(viewer_SOURCE_FILES      llfilteredwearablelist.cpp      llfirstuse.cpp      llflexibleobject.cpp -    llflickrconnect.cpp      llfloaterabout.cpp      llfloaterbvhpreview.cpp      llfloaterauction.cpp @@ -244,7 +243,6 @@ set(viewer_SOURCE_FILES      llfloaterexperiencepicker.cpp      llfloaterexperienceprofile.cpp      llfloaterexperiences.cpp -    llfloaterflickr.cpp      llfloaterfonttest.cpp      llfloatergesture.cpp      llfloatergodtools.cpp @@ -317,7 +315,6 @@ set(viewer_SOURCE_FILES      llfloatertos.cpp      llfloatertoybox.cpp      llfloatertranslationsettings.cpp -    llfloatertwitter.cpp      llfloateruipreview.cpp      llfloaterurlentry.cpp      llfloatervoiceeffect.cpp @@ -615,7 +612,6 @@ set(viewer_SOURCE_FILES      lltransientdockablefloater.cpp      lltransientfloatermgr.cpp      lltranslate.cpp -    lltwitterconnect.cpp      lluiavatar.cpp      lluilistener.cpp      lluploaddialog.cpp @@ -833,7 +829,6 @@ set(viewer_HEADER_FILES      llfilteredwearablelist.h      llfirstuse.h      llflexibleobject.h -    llflickrconnect.h      llfloaterabout.h      llfloaterbvhpreview.h      llfloaterauction.h @@ -869,7 +864,6 @@ set(viewer_HEADER_FILES      llfloaterexperiencepicker.h      llfloaterexperienceprofile.h      llfloaterexperiences.h -    llfloaterflickr.h      llfloaterfonttest.h      llfloatergesture.h      llfloatergodtools.h @@ -945,7 +939,6 @@ set(viewer_HEADER_FILES      llfloatertos.h      llfloatertoybox.h      llfloatertranslationsettings.h -    llfloatertwitter.h      llfloateruipreview.h      llfloaterurlentry.h      llfloatervoiceeffect.h @@ -1233,7 +1226,6 @@ set(viewer_HEADER_FILES      lltransientdockablefloater.h      lltransientfloatermgr.h      lltranslate.h -    lltwitterconnect.h      lluiconstants.h      lluiavatar.h      lluilistener.h diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index cab0c523b2..fa37dea51b 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -228,26 +228,6 @@             is_running_function="Floater.IsOpen"             is_running_parameters="snapshot"             /> -  <command name="flickr" -           available_in_toybox="true" -           icon="Command_Flickr_Icon" -           label_ref="Command_Flickr_Label" -           tooltip_ref="Command_Flickr_Tooltip" -           execute_function="Floater.ToggleOrBringToFront" -           execute_parameters="flickr" -           is_running_function="Floater.IsOpen" -           is_running_parameters="flickr" -           /> -  <command name="twitter" -           available_in_toybox="true" -           icon="Command_Twitter_Icon" -           label_ref="Command_Twitter_Label" -           tooltip_ref="Command_Twitter_Tooltip" -           execute_function="Floater.ToggleOrBringToFront" -           execute_parameters="twitter" -           is_running_function="Floater.IsOpen" -           is_running_parameters="twitter" -           />    <command name="speak"             available_in_toybox="true"             icon="Command_Speak_Icon" diff --git a/indra/newview/llflickrconnect.cpp b/indra/newview/llflickrconnect.cpp deleted file mode 100644 index d7d161f239..0000000000 --- a/indra/newview/llflickrconnect.cpp +++ /dev/null @@ -1,538 +0,0 @@ -/**  - * @file llflickrconnect.h - * @author Merov, Cho - * @brief Connection to Flickr Service - * - * $LicenseInfo:firstyear=2013&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2013, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llflickrconnect.h" - -#include "llagent.h" -#include "llcallingcard.h"			// for LLAvatarTracker -#include "llcommandhandler.h" -#include "llnotificationsutil.h" -#include "llurlaction.h" -#include "llimagepng.h" -#include "llimagejpeg.h" -#include "lltrans.h" -#include "llevents.h" -#include "llviewerregion.h" - -#include "llfloaterwebcontent.h" -#include "llfloaterreg.h" -#include "llcorehttputil.h" - -boost::scoped_ptr<LLEventPump> LLFlickrConnect::sStateWatcher(new LLEventStream("FlickrConnectState")); -boost::scoped_ptr<LLEventPump> LLFlickrConnect::sInfoWatcher(new LLEventStream("FlickrConnectInfo")); -boost::scoped_ptr<LLEventPump> LLFlickrConnect::sContentWatcher(new LLEventStream("FlickrConnectContent")); - -// Local functions -void log_flickr_connect_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description) -{ -    // Note: 302 (redirect) is *not* an error that warrants logging -    if (status != 302) -    { -		LL_WARNS("FlickrConnect") << request << " request failed with a " << status << " " << reason << ". Reason: " << code << " (" << description << ")" << LL_ENDL; -    } -} - -void toast_user_for_flickr_success() -{ -	LLSD args; -    args["MESSAGE"] = LLTrans::getString("flickr_post_success"); -    LLNotificationsUtil::add("FlickrConnect", args); -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLFlickrConnect::flickrConnectCoro(std::string requestToken, std::string oauthVerifier) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD body; -    if (!requestToken.empty()) -        body["request_token"] = requestToken; -    if (!oauthVerifier.empty()) -        body["oauth_verifier"] = oauthVerifier; - -    setConnectionState(LLFlickrConnect::FLICKR_CONNECTION_IN_PROGRESS); - -    LLSD result = httpAdapter->putAndSuspend(httpRequest, getFlickrConnectURL("/connection"), body, httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status) -    { -        if ( status == LLCore::HttpStatus(HTTP_FOUND) ) -        { -            std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -            if (location.empty()) -            { -                LL_WARNS("FlickrConnect") << "Missing Location header " << LL_ENDL; -            } -            else -            { -                openFlickrWeb(location); -            } -        } -        else -        { -            LL_WARNS("FlickrConnect") << "Connection failed " << status.toString() << LL_ENDL; -            setConnectionState(LLFlickrConnect::FLICKR_CONNECTION_FAILED); -            log_flickr_connect_error("Connect", status.getStatus(), status.toString(), -                result.get("error_code"), result.get("error_description")); -        } -    } -    else -    { -        LL_DEBUGS("FlickrConnect") << "Connect successful. " << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_CONNECTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -bool LLFlickrConnect::testShareStatus(LLSD &result) -{ -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (status) -        return true; - -    if (status == LLCore::HttpStatus(HTTP_FOUND)) -    { -        std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -        if (location.empty()) -        { -            LL_WARNS("FlickrConnect") << "Missing Location header " << LL_ENDL; -        } -        else -        { -            openFlickrWeb(location); -        } -    } -    if (status == LLCore::HttpStatus(HTTP_NOT_FOUND)) -    { -        LL_DEBUGS("FlickrConnect") << "Not connected. " << LL_ENDL; -        connectToFlickr(); -    } -    else -    { -        LL_WARNS("FlickrConnect") << "HTTP Status error " << status.toString() << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_POST_FAILED); -        log_flickr_connect_error("Share", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    return false; -} - -void LLFlickrConnect::flickrShareCoro(LLSD share) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->postAndSuspend(httpRequest, getFlickrConnectURL("/share/photo", true), share, httpOpts); - -    if (testShareStatus(result)) -    { -        toast_user_for_flickr_success(); -        LL_DEBUGS("FlickrConnect") << "Post successful. " << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_POSTED); -    } - -} - -void LLFlickrConnect::flickrShareImageCoro(LLPointer<LLImageFormatted> image, std::string title, std::string description, std::string tags, int safetyLevel) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    std::string imageFormat; -    if (dynamic_cast<LLImagePNG*>(image.get())) -    { -        imageFormat = "png"; -    } -    else if (dynamic_cast<LLImageJPEG*>(image.get())) -    { -        imageFormat = "jpg"; -    } -    else -    { -        LL_WARNS() << "Image to upload is not a PNG or JPEG" << LL_ENDL; -        return; -    } - -    // All this code is mostly copied from LLWebProfile::post() -    const std::string boundary = "----------------------------0123abcdefab"; - -    std::string contentType = "multipart/form-data; boundary=" + boundary; -    httpHeaders->append("Content-Type", contentType.c_str()); - -    LLCore::BufferArray::ptr_t raw = LLCore::BufferArray::ptr_t(new LLCore::BufferArray()); //  -    LLCore::BufferArrayStream body(raw.get()); - -    // *NOTE: The order seems to matter. -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"title\"\r\n\r\n" -        << title << "\r\n"; - -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"description\"\r\n\r\n" -        << description << "\r\n"; - -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"tags\"\r\n\r\n" -        << tags << "\r\n"; - -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"safety_level\"\r\n\r\n" -        << safetyLevel << "\r\n"; - -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"image\"; filename=\"Untitled." << imageFormat << "\"\r\n" -        << "Content-Type: image/" << imageFormat << "\r\n\r\n"; - -    // Insert the image data. -    // *FIX: Treating this as a string will probably screw it up ... -    U8* image_data = image->getData(); -    for (S32 i = 0; i < image->getDataSize(); ++i) -    { -        body << image_data[i]; -    } - -    body << "\r\n--" << boundary << "--\r\n"; - -    LLSD result = httpAdapter->postAndSuspend(httpRequest, getFlickrConnectURL("/share/photo", true), raw, httpOpts, httpHeaders); - -    if (testShareStatus(result)) -    { -        toast_user_for_flickr_success(); -        LL_DEBUGS("FlickrConnect") << "Post successful. " << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_POSTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLFlickrConnect::flickrDisconnectCoro() -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    setConnectionState(LLFlickrConnect::FLICKR_DISCONNECTING); -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->deleteAndSuspend(httpRequest, getFlickrConnectURL("/connection"), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status && (status != LLCore::HttpStatus(HTTP_NOT_FOUND))) -    { -        LL_WARNS("FlickrConnect") << "Disconnect failed!" << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_DISCONNECT_FAILED); - -        log_flickr_connect_error("Disconnect", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    else -    { -        LL_DEBUGS("FlickrConnect") << "Disconnect successful. " << LL_ENDL; -        clearInfo(); -        setConnectionState(LLFlickrConnect::FLICKR_NOT_CONNECTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLFlickrConnect::flickrConnectedCoro(bool autoConnect) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    setConnectionState(LLFlickrConnect::FLICKR_CONNECTION_IN_PROGRESS); - -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->getAndSuspend(httpRequest, getFlickrConnectURL("/connection", true), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status) -    { -        if (status == LLCore::HttpStatus(HTTP_NOT_FOUND)) -        { -            LL_DEBUGS("FlickrConnect") << "Not connected. " << LL_ENDL; -            if (autoConnect) -            { -                connectToFlickr(); -            } -            else -            { -                setConnectionState(LLFlickrConnect::FLICKR_NOT_CONNECTED); -            } -        } -        else -        { -            LL_WARNS("FlickrConnect") << "Failed to test connection:" << status.toTerseString() << LL_ENDL; - -            setConnectionState(LLFlickrConnect::FLICKR_CONNECTION_FAILED); -            log_flickr_connect_error("Connected", status.getStatus(), status.toString(), -                result.get("error_code"), result.get("error_description")); -        } -    } -    else -    { -        LL_DEBUGS("FlickrConnect") << "Connect successful. " << LL_ENDL; -        setConnectionState(LLFlickrConnect::FLICKR_CONNECTED); -    } - -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLFlickrConnect::flickrInfoCoro() -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->getAndSuspend(httpRequest, getFlickrConnectURL("/info", true), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (status == LLCore::HttpStatus(HTTP_FOUND)) -    { -        std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -        if (location.empty()) -        { -            LL_WARNS("FlickrConnect") << "Missing Location header " << LL_ENDL; -        } -        else -        { -            openFlickrWeb(location); -        } -    } -    else if (!status) -    { -        LL_WARNS("FlickrConnect") << "Flickr Info failed: " << status.toString() << LL_ENDL; -        log_flickr_connect_error("Info", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    else -    { -        LL_INFOS("FlickrConnect") << "Flickr: Info received" << LL_ENDL; -        result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS); -        storeInfo(result); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -LLFlickrConnect::LLFlickrConnect() -:	mConnectionState(FLICKR_NOT_CONNECTED), -	mConnected(false), -	mInfo(), -	mRefreshInfo(false), -	mReadFromMaster(false) -{ -} - -void LLFlickrConnect::openFlickrWeb(std::string url) -{ -	LLFloaterWebContent::Params p; -    p.url(url); -    p.show_chrome(true); -    p.allow_back_forward_navigation(false); -    p.clean_browser(true); -	LLFloater *floater = LLFloaterReg::showInstance("flickr_web", p); -	//the internal web browser has a bug that prevents it from gaining focus unless a mouse event occurs first (it seems). -	//So when showing the internal web browser, set focus to it's containing floater "flickr_web". When a mouse event  -	//occurs on the "webbrowser" panel part of the floater, a mouse cursor will properly show and the "webbrowser" will gain focus. -	//flickr_web floater contains the "webbrowser" panel.    JIRA: ACME-744 -	gFocusMgr.setKeyboardFocus( floater ); - -	//LLUrlAction::openURLExternal(url); -} - -std::string LLFlickrConnect::getFlickrConnectURL(const std::string& route, bool include_read_from_master) -{ -    std::string url(""); -    LLViewerRegion *regionp = gAgent.getRegion(); -    if (regionp) -    { -		//url = "http://pdp15.lindenlab.com/flickr/agent/" + gAgentID.asString(); // TEMPORARY FOR TESTING - CHO -        url = regionp->getCapability("FlickrConnect"); -        url += route; -     -        if (include_read_from_master && mReadFromMaster) -        { -            url += "?read_from_master=true"; -        } -    } -	return url; -} - -void LLFlickrConnect::connectToFlickr(const std::string& request_token, const std::string& oauth_verifier) -{ -    LLCoros::instance().launch("LLFlickrConnect::flickrConnectCoro", -        boost::bind(&LLFlickrConnect::flickrConnectCoro, this, request_token, oauth_verifier)); -} - -void LLFlickrConnect::disconnectFromFlickr() -{ -    LLCoros::instance().launch("LLFlickrConnect::flickrDisconnectCoro", -        boost::bind(&LLFlickrConnect::flickrDisconnectCoro, this)); -} - -void LLFlickrConnect::checkConnectionToFlickr(bool auto_connect) -{ -    LLCoros::instance().launch("LLFlickrConnect::flickrConnectedCoro", -        boost::bind(&LLFlickrConnect::flickrConnectedCoro, this, auto_connect)); -} - -void LLFlickrConnect::loadFlickrInfo() -{ -	if(mRefreshInfo) -	{ -        LLCoros::instance().launch("LLFlickrConnect::flickrInfoCoro", -            boost::bind(&LLFlickrConnect::flickrInfoCoro, this)); -	} -} - -void LLFlickrConnect::uploadPhoto(const std::string& image_url, const std::string& title, const std::string& description, const std::string& tags, int safety_level) -{ -	LLSD body; -	body["image"] = image_url; -	body["title"] = title; -	body["description"] = description; -	body["tags"] = tags; -	body["safety_level"] = safety_level; - -    setConnectionState(LLFlickrConnect::FLICKR_POSTING); - -    LLCoros::instance().launch("LLFlickrConnect::flickrShareCoro", -        boost::bind(&LLFlickrConnect::flickrShareCoro, this, body)); -} - -void LLFlickrConnect::uploadPhoto(LLPointer<LLImageFormatted> image, const std::string& title, const std::string& description, const std::string& tags, int safety_level) -{ -    setConnectionState(LLFlickrConnect::FLICKR_POSTING); - -    LLCoros::instance().launch("LLFlickrConnect::flickrShareImageCoro", -        boost::bind(&LLFlickrConnect::flickrShareImageCoro, this, image,  -        title, description, tags, safety_level)); -} - -void LLFlickrConnect::storeInfo(const LLSD& info) -{ -	mInfo = info; -	mRefreshInfo = false; - -	sInfoWatcher->post(info); -} - -const LLSD& LLFlickrConnect::getInfo() const -{ -	return mInfo; -} - -void LLFlickrConnect::clearInfo() -{ -	mInfo = LLSD(); -} - -void LLFlickrConnect::setDataDirty() -{ -	mRefreshInfo = true; -} - -void LLFlickrConnect::setConnectionState(LLFlickrConnect::EConnectionState connection_state) -{ -	if(connection_state == FLICKR_CONNECTED) -	{ -		mReadFromMaster = true; -		setConnected(true); -		setDataDirty(); -	} -	else if(connection_state == FLICKR_NOT_CONNECTED) -	{ -		setConnected(false); -	} -	else if(connection_state == FLICKR_POSTED) -	{ -		mReadFromMaster = false; -	} - -	if (mConnectionState != connection_state) -	{ -		// set the connection state before notifying watchers -		mConnectionState = connection_state; - -		LLSD state_info; -		state_info["enum"] = connection_state; -		sStateWatcher->post(state_info); -	} -} - -void LLFlickrConnect::setConnected(bool connected) -{ -	mConnected = connected; -} diff --git a/indra/newview/llflickrconnect.h b/indra/newview/llflickrconnect.h deleted file mode 100644 index 43cadca708..0000000000 --- a/indra/newview/llflickrconnect.h +++ /dev/null @@ -1,108 +0,0 @@ -/**  - * @file llflickrconnect.h - * @author Merov, Cho - * @brief Connection to Flickr Service - * - * $LicenseInfo:firstyear=2013&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2013, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLICKRCONNECT_H -#define LL_LLFLICKRCONNECT_H - -#include "llsingleton.h" -#include "llimage.h" -#include "llcoros.h" -#include "lleventcoro.h" - -class LLEventPump; - -/** - * @class LLFlickrConnect - * - * Manages authentication to, and interaction with, a web service allowing the - * the viewer to upload photos to Flickr. - */ -class LLFlickrConnect : public LLSingleton<LLFlickrConnect> -{ -	LLSINGLETON(LLFlickrConnect); -	~LLFlickrConnect() {}; -	LOG_CLASS(LLFlickrConnect); -public: -    enum EConnectionState -	{ -		FLICKR_NOT_CONNECTED = 0, -		FLICKR_CONNECTION_IN_PROGRESS = 1, -		FLICKR_CONNECTED = 2, -		FLICKR_CONNECTION_FAILED = 3, -		FLICKR_POSTING = 4, -		FLICKR_POSTED = 5, -		FLICKR_POST_FAILED = 6, -		FLICKR_DISCONNECTING = 7, -		FLICKR_DISCONNECT_FAILED = 8 -	}; -	 -	void connectToFlickr(const std::string& request_token = "", const std::string& oauth_verifier = "");	// Initiate the complete Flickr connection. Please use checkConnectionToFlickr() in normal use. -	void disconnectFromFlickr();																			// Disconnect from the Flickr service. -    void checkConnectionToFlickr(bool auto_connect = false);												// Check if an access token is available on the Flickr service. If not, call connectToFlickr(). -     -	void loadFlickrInfo(); -	void uploadPhoto(const std::string& image_url, const std::string& title, const std::string& description, const std::string& tags, int safety_level); -	void uploadPhoto(LLPointer<LLImageFormatted> image, const std::string& title, const std::string& description, const std::string& tags, int safety_level); -	 -	void storeInfo(const LLSD& info); -	const LLSD& getInfo() const; -	void clearInfo(); -	void setDataDirty(); -     -    void setConnectionState(EConnectionState connection_state); -	void setConnected(bool connected); -	bool isConnected() { return mConnected; } -	bool isTransactionOngoing() { return ((mConnectionState == FLICKR_CONNECTION_IN_PROGRESS) || (mConnectionState == FLICKR_POSTING) || (mConnectionState == FLICKR_DISCONNECTING)); } -    EConnectionState getConnectionState() { return mConnectionState; } -     -    void openFlickrWeb(std::string url); - -private: - - 	std::string getFlickrConnectURL(const std::string& route = "", bool include_read_from_master = false); - -    EConnectionState mConnectionState; -	BOOL mConnected; -	LLSD mInfo; -	bool mRefreshInfo; -	bool mReadFromMaster; -	 -	static boost::scoped_ptr<LLEventPump> sStateWatcher; -	static boost::scoped_ptr<LLEventPump> sInfoWatcher; -	static boost::scoped_ptr<LLEventPump> sContentWatcher; - -    bool testShareStatus(LLSD &result); -    void flickrConnectCoro(std::string requestToken, std::string oauthVerifier); -    void flickrShareCoro(LLSD share); -    void flickrShareImageCoro(LLPointer<LLImageFormatted> image, std::string title, std::string description, std::string tags, int safetyLevel); -    void flickrDisconnectCoro(); -    void flickrConnectedCoro(bool autoConnect); -    void flickrInfoCoro(); - -}; - -#endif // LL_LLFLICKRCONNECT_H diff --git a/indra/newview/llfloaterbigpreview.h b/indra/newview/llfloaterbigpreview.h index 63c6784d36..513ed8da6e 100644 --- a/indra/newview/llfloaterbigpreview.h +++ b/indra/newview/llfloaterbigpreview.h @@ -1,6 +1,6 @@  /**   * @file   llfloaterbigpreview.h -* @brief  Display of extended (big) preview for snapshots and SL Share +* @brief  Display of extended (big) preview for snapshots  * @author merov@lindenlab.com  *  * $LicenseInfo:firstyear=2013&license=viewerlgpl$ diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp deleted file mode 100644 index 69a92b2b54..0000000000 --- a/indra/newview/llfloaterflickr.cpp +++ /dev/null @@ -1,787 +0,0 @@ -/**  -* @file llfloaterflickr.cpp -* @brief Implementation of llfloaterflickr -* @author cho@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterflickr.h" - -#include "llagent.h" -#include "llagentui.h" -#include "llcheckboxctrl.h" -#include "llcombobox.h" -#include "llflickrconnect.h" -#include "llfloaterreg.h" -#include "lliconctrl.h" -#include "llimagefiltersmanager.h" -#include "llresmgr.h"		// LLLocale -#include "llsdserialize.h" -#include "llloadingindicator.h" -#include "llslurl.h" -#include "lltrans.h" -#include "llsnapshotlivepreview.h" -#include "llfloaterbigpreview.h" -#include "llviewerregion.h" -#include "llviewercontrol.h" -#include "llviewermedia.h" -#include "lltabcontainer.h" -#include "llviewerparcelmgr.h" -#include "llviewerregion.h" -#include <boost/regex.hpp> -static LLPanelInjector<LLFlickrPhotoPanel> t_panel_photo("llflickrphotopanel"); -static LLPanelInjector<LLFlickrAccountPanel> t_panel_account("llflickraccountpanel"); - -const std::string DEFAULT_PHOTO_QUERY_PARAMETERS = "?sourceid=slshare_photo&utm_source=flickr&utm_medium=photo&utm_campaign=slshare"; -const std::string DEFAULT_TAG_TEXT = "secondlife "; -const std::string FLICKR_MACHINE_TAGS_NAMESPACE = "secondlife"; - -/////////////////////////// -//LLFlickrPhotoPanel/////// -/////////////////////////// - -LLFlickrPhotoPanel::LLFlickrPhotoPanel() : -mResolutionComboBox(NULL), -mRefreshBtn(NULL), -mBtnPreview(NULL), -mWorkingLabel(NULL), -mThumbnailPlaceholder(NULL), -mTitleTextBox(NULL), -mDescriptionTextBox(NULL), -mLocationCheckbox(NULL), -mTagsTextBox(NULL), -mRatingComboBox(NULL), -mBigPreviewFloater(NULL), -mPostButton(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.SendPhoto", boost::bind(&LLFlickrPhotoPanel::onSend, this)); -	mCommitCallbackRegistrar.add("SocialSharing.RefreshPhoto", boost::bind(&LLFlickrPhotoPanel::onClickNewSnapshot, this)); -	mCommitCallbackRegistrar.add("SocialSharing.BigPreview", boost::bind(&LLFlickrPhotoPanel::onClickBigPreview, this)); -} - -LLFlickrPhotoPanel::~LLFlickrPhotoPanel() -{ -	if(mPreviewHandle.get()) -	{ -		mPreviewHandle.get()->die(); -	} -} - -BOOL LLFlickrPhotoPanel::postBuild() -{ -	setVisibleCallback(boost::bind(&LLFlickrPhotoPanel::onVisibilityChange, this, _2)); -	 -	mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); -	mResolutionComboBox->setCommitCallback(boost::bind(&LLFlickrPhotoPanel::updateResolution, this, TRUE)); -	mFilterComboBox = getChild<LLUICtrl>("filters_combobox"); -	mFilterComboBox->setCommitCallback(boost::bind(&LLFlickrPhotoPanel::updateResolution, this, TRUE)); -	mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn"); -	mBtnPreview = getChild<LLButton>("big_preview_btn"); -    mWorkingLabel = getChild<LLUICtrl>("working_lbl"); -	mThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder"); -	mTitleTextBox = getChild<LLUICtrl>("photo_title"); -	mDescriptionTextBox = getChild<LLUICtrl>("photo_description"); -	mLocationCheckbox = getChild<LLUICtrl>("add_location_cb"); -	mTagsTextBox = getChild<LLUICtrl>("photo_tags"); -	mTagsTextBox->setValue(DEFAULT_TAG_TEXT); -	mRatingComboBox = getChild<LLUICtrl>("rating_combobox"); -	mPostButton = getChild<LLUICtrl>("post_photo_btn"); -	mCancelButton = getChild<LLUICtrl>("cancel_photo_btn"); -	mBigPreviewFloater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); - -	// Update filter list -    std::vector<std::string> filter_list = LLImageFiltersManager::getInstance()->getFiltersList(); -	LLComboBox* filterbox = static_cast<LLComboBox *>(mFilterComboBox); -    for (U32 i = 0; i < filter_list.size(); i++)  -	{ -        filterbox->add(filter_list[i]); -    } - -	return LLPanel::postBuild(); -} - -// virtual -S32 LLFlickrPhotoPanel::notify(const LLSD& info) -{ -	if (info.has("snapshot-updating")) -	{ -        // Disable the Post button and whatever else while the snapshot is not updated -        // updateControls(); -		return 1; -	} -     -	if (info.has("snapshot-updated")) -	{ -        // Enable the send/post/save buttons. -        updateControls(); -         -		// The refresh button is initially hidden. We show it after the first update, -		// i.e. after snapshot is taken -		LLUICtrl * refresh_button = getRefreshBtn(); -		if (!refresh_button->getVisible()) -		{ -			refresh_button->setVisible(true); -		} -		return 1; -	} -     -	return 0; -} - -void LLFlickrPhotoPanel::draw() -{  -	LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); - -    // Enable interaction only if no transaction with the service is on-going (prevent duplicated posts) -    bool no_ongoing_connection = !(LLFlickrConnect::instance().isTransactionOngoing()); -    mCancelButton->setEnabled(no_ongoing_connection); -    mTitleTextBox->setEnabled(no_ongoing_connection); -    mDescriptionTextBox->setEnabled(no_ongoing_connection); -    mTagsTextBox->setEnabled(no_ongoing_connection); -    mRatingComboBox->setEnabled(no_ongoing_connection); -    mResolutionComboBox->setEnabled(no_ongoing_connection); -    mFilterComboBox->setEnabled(no_ongoing_connection); -    mRefreshBtn->setEnabled(no_ongoing_connection); -    mBtnPreview->setEnabled(no_ongoing_connection); -    mLocationCheckbox->setEnabled(no_ongoing_connection); -     -    // Reassign the preview floater if we have the focus and the preview exists -    if (hasFocus() && isPreviewVisible()) -    { -        attachPreview(); -    } -     -    // Toggle the button state as appropriate -    bool preview_active = (isPreviewVisible() && mBigPreviewFloater->isFloaterOwner(getParentByType<LLFloater>())); -	mBtnPreview->setToggleState(preview_active); -     -    // Display the preview if one is available -	if (previewp && previewp->getThumbnailImage()) -	{ -		const LLRect& thumbnail_rect = mThumbnailPlaceholder->getRect(); -		const S32 thumbnail_w = previewp->getThumbnailWidth(); -		const S32 thumbnail_h = previewp->getThumbnailHeight(); - -		// calc preview offset within the preview rect -		const S32 local_offset_x = (thumbnail_rect.getWidth()  - thumbnail_w) / 2 ; -		const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; -		S32 offset_x = thumbnail_rect.mLeft + local_offset_x; -		S32 offset_y = thumbnail_rect.mBottom + local_offset_y; - -		gGL.matrixMode(LLRender::MM_MODELVIEW); -		// Apply floater transparency to the texture unless the floater is focused. -		F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); -		LLColor4 color = LLColor4::white; -		gl_draw_scaled_image(offset_x, offset_y,  -			thumbnail_w, thumbnail_h, -			previewp->getThumbnailImage(), color % alpha); -	} - -    // Update the visibility of the working (computing preview) label -    mWorkingLabel->setVisible(!(previewp && previewp->getSnapshotUpToDate())); -     -    // Enable Post if we have a preview to send and no on going connection being processed -    mPostButton->setEnabled(no_ongoing_connection && (previewp && previewp->getSnapshotUpToDate())); -     -    // Draw the rest of the panel on top of it -	LLPanel::draw(); -} - -LLSnapshotLivePreview* LLFlickrPhotoPanel::getPreviewView() -{ -	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)mPreviewHandle.get(); -	return previewp; -} - -void LLFlickrPhotoPanel::onVisibilityChange(BOOL visible) -{ -	if (visible) -	{ -		if (mPreviewHandle.get()) -		{ -			LLSnapshotLivePreview* preview = getPreviewView(); -			if(preview) -			{ -				LL_DEBUGS() << "opened, updating snapshot" << LL_ENDL; -				preview->updateSnapshot(TRUE); -			} -		} -		else -		{ -			LLRect full_screen_rect = getRootView()->getRect(); -			LLSnapshotLivePreview::Params p; -			p.rect(full_screen_rect); -			LLSnapshotLivePreview* previewp = new LLSnapshotLivePreview(p); -			mPreviewHandle = previewp->getHandle(); - -            previewp->setContainer(this); -            previewp->setSnapshotType(LLSnapshotModel::SNAPSHOT_WEB); -            previewp->setSnapshotFormat(LLSnapshotModel::SNAPSHOT_FORMAT_PNG); -            previewp->setThumbnailSubsampled(TRUE);     // We want the preview to reflect the *saved* image -            previewp->setAllowRenderUI(FALSE);          // We do not want the rendered UI in our snapshots -            previewp->setAllowFullScreenPreview(FALSE);  // No full screen preview in SL Share mode -			previewp->setThumbnailPlaceholderRect(mThumbnailPlaceholder->getRect()); - -			updateControls(); -		} -	} -} - -void LLFlickrPhotoPanel::onClickNewSnapshot() -{ -	LLSnapshotLivePreview* previewp = getPreviewView(); -	if (previewp) -	{ -		previewp->updateSnapshot(TRUE); -	} -} - -void LLFlickrPhotoPanel::onClickBigPreview() -{ -    // Toggle the preview -    if (isPreviewVisible()) -    { -        LLFloaterReg::hideInstance("big_preview"); -    } -    else -    { -        attachPreview(); -        LLFloaterReg::showInstance("big_preview"); -    } -} - -bool LLFlickrPhotoPanel::isPreviewVisible() -{ -    return (mBigPreviewFloater && mBigPreviewFloater->getVisible()); -} - -void LLFlickrPhotoPanel::attachPreview() -{ -    if (mBigPreviewFloater) -    { -        LLSnapshotLivePreview* previewp = getPreviewView(); -        mBigPreviewFloater->setPreview(previewp); -        mBigPreviewFloater->setFloaterOwner(getParentByType<LLFloater>()); -    } -} - -void LLFlickrPhotoPanel::onSend() -{ -	LLEventPumps::instance().obtain("FlickrConnectState").stopListening("LLFlickrPhotoPanel"); // just in case it is already listening -	LLEventPumps::instance().obtain("FlickrConnectState").listen("LLFlickrPhotoPanel", boost::bind(&LLFlickrPhotoPanel::onFlickrConnectStateChange, this, _1)); -	 -	// Connect to Flickr if necessary and then post -	if (LLFlickrConnect::instance().isConnected()) -	{ -		sendPhoto(); -	} -	else -	{ -		LLFlickrConnect::instance().checkConnectionToFlickr(true); -	} -} - -bool LLFlickrPhotoPanel::onFlickrConnectStateChange(const LLSD& data) -{ -	switch (data.get("enum").asInteger()) -	{ -		case LLFlickrConnect::FLICKR_CONNECTED: -			sendPhoto(); -			break; - -		case LLFlickrConnect::FLICKR_POSTED: -			LLEventPumps::instance().obtain("FlickrConnectState").stopListening("LLFlickrPhotoPanel"); -			clearAndClose(); -			break; -	} - -	return false; -} - -void LLFlickrPhotoPanel::sendPhoto() -{ -	// Get the title, description, and tags -	std::string title = mTitleTextBox->getValue().asString(); -	std::string description = mDescriptionTextBox->getValue().asString(); -	std::string tags = mTagsTextBox->getValue().asString(); - -	// Add the location if required -	bool add_location = mLocationCheckbox->getValue().asBoolean(); -	if (add_location) -	{ -		// Get the SLURL for the location -		LLSLURL slurl; -		LLAgentUI::buildSLURL(slurl); -		std::string slurl_string = slurl.getSLURLString(); - -		// Add query parameters so Google Analytics can track incoming clicks! -		slurl_string += DEFAULT_PHOTO_QUERY_PARAMETERS; - -		std::string photo_link_text = "Visit this location";// at [] in Second Life"; -		std::string parcel_name = LLViewerParcelMgr::getInstance()->getAgentParcelName(); -		if (!parcel_name.empty()) -		{ -			boost::regex pattern = boost::regex("\\S\\.[a-zA-Z]{2,}"); -			boost::match_results<std::string::const_iterator> matches; -			if(!boost::regex_search(parcel_name, matches, pattern)) -			{ -				photo_link_text += " at " + parcel_name; -			} -		} -		photo_link_text += " in Second Life"; - -		slurl_string = "<a href=\"" + slurl_string + "\">" + photo_link_text + "</a>"; - -		// Add it to the description (pretty crude, but we don't have a better option with photos) -		if (description.empty()) -			description = slurl_string; -		else -			description = description + "\n\n" + slurl_string; - -		// Also add special "machine tags" with location metadata -		const LLVector3& agent_pos_region = gAgent.getPositionAgent(); -		LLViewerRegion* region = gAgent.getRegion(); -		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -		if (region && parcel) -		{ -			S32 pos_x = S32(agent_pos_region.mV[VX]); -			S32 pos_y = S32(agent_pos_region.mV[VY]); -			S32 pos_z = S32(agent_pos_region.mV[VZ]); -			 -			std::string parcel_name = LLViewerParcelMgr::getInstance()->getAgentParcelName(); -			std::string region_name = region->getName(); -			 -			if (!region_name.empty()) -			{ -				tags += llformat(" \"%s:region=%s\"", FLICKR_MACHINE_TAGS_NAMESPACE.c_str(), region_name.c_str()); -			} -			if (!parcel_name.empty()) -			{ -				tags += llformat(" \"%s:parcel=%s\"", FLICKR_MACHINE_TAGS_NAMESPACE.c_str(), parcel_name.c_str()); -			} -			tags += llformat(" \"%s:x=%d\"", FLICKR_MACHINE_TAGS_NAMESPACE.c_str(), pos_x); -			tags += llformat(" \"%s:y=%d\"", FLICKR_MACHINE_TAGS_NAMESPACE.c_str(), pos_y); -			tags += llformat(" \"%s:z=%d\"", FLICKR_MACHINE_TAGS_NAMESPACE.c_str(), pos_z); -		} -	} - -	// Get the content rating -	int content_rating = mRatingComboBox->getValue().asInteger(); - -	// Get the image -	LLSnapshotLivePreview* previewp = getPreviewView(); -	 -	// Post to Flickr -	LLFlickrConnect::instance().uploadPhoto(previewp->getFormattedImage(), title, description, tags, content_rating); - -	updateControls(); -} - -void LLFlickrPhotoPanel::clearAndClose() -{ -	mTitleTextBox->setValue(""); -	mDescriptionTextBox->setValue(""); - -	LLFloater* floater = getParentByType<LLFloater>(); -	if (floater) -	{ -		floater->closeFloater(); -        if (mBigPreviewFloater) -        { -            mBigPreviewFloater->closeOnFloaterOwnerClosing(floater); -        } -	} -} - -void LLFlickrPhotoPanel::updateControls() -{ -	LLSnapshotLivePreview* previewp = getPreviewView(); -	BOOL got_snap = previewp && previewp->getSnapshotUpToDate(); - -	// *TODO: Separate maximum size for Web images from postcards -	LL_DEBUGS() << "Is snapshot up-to-date? " << got_snap << LL_ENDL; - -	updateResolution(FALSE); -} - -void LLFlickrPhotoPanel::updateResolution(BOOL do_update) -{ -	LLComboBox* combobox  = static_cast<LLComboBox *>(mResolutionComboBox); -	LLComboBox* filterbox = static_cast<LLComboBox *>(mFilterComboBox); - -	std::string sdstring = combobox->getSelectedValue(); -	LLSD sdres; -	std::stringstream sstream(sdstring); -	LLSDSerialize::fromNotation(sdres, sstream, sdstring.size()); - -	S32 width = sdres[0]; -	S32 height = sdres[1]; -     -    // Note : index 0 of the filter drop down is assumed to be "No filter" in whichever locale  -    std::string filter_name = (filterbox->getCurrentIndex() ? filterbox->getSimple() : ""); - -	LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); -	if (previewp && combobox->getCurrentIndex() >= 0) -	{ -		S32 original_width = 0 , original_height = 0 ; -		previewp->getSize(original_width, original_height) ; - -		if (width == 0 || height == 0) -		{ -			// take resolution from current window size -			LL_DEBUGS() << "Setting preview res from window: " << gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << LL_ENDL; -			previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw()); -		} -		else -		{ -			// use the resolution from the selected pre-canned drop-down choice -			LL_DEBUGS() << "Setting preview res selected from combo: " << width << "x" << height << LL_ENDL; -			previewp->setSize(width, height); -		} - -		checkAspectRatio(width); - -		previewp->getSize(width, height); -		if ((original_width != width) || (original_height != height)) -		{ -			previewp->setSize(width, height); -			if (do_update) -			{ -                previewp->updateSnapshot(TRUE); -				updateControls(); -			} -		} -        // Get the old filter, compare to the current one "filter_name" and set if changed -        std::string original_filter = previewp->getFilter(); -		if (original_filter != filter_name) -		{ -            previewp->setFilter(filter_name); -			if (do_update) -			{ -                previewp->updateSnapshot(FALSE, TRUE); -				updateControls(); -			} -		} -	} -} - -void LLFlickrPhotoPanel::checkAspectRatio(S32 index) -{ -	LLSnapshotLivePreview *previewp = getPreviewView() ; - -	BOOL keep_aspect = FALSE; - -	if (0 == index) // current window size -	{ -		keep_aspect = TRUE; -	} -	else // predefined resolution -	{ -		keep_aspect = FALSE; -	} - -	if (previewp) -	{ -		previewp->mKeepAspectRatio = keep_aspect; -	} -} - -LLUICtrl* LLFlickrPhotoPanel::getRefreshBtn() -{ -	return mRefreshBtn; -} - -/////////////////////////// -//LLFlickrAccountPanel////// -/////////////////////////// - -LLFlickrAccountPanel::LLFlickrAccountPanel() :  -mAccountCaptionLabel(NULL), -mAccountNameLabel(NULL), -mPanelButtons(NULL), -mConnectButton(NULL), -mDisconnectButton(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLFlickrAccountPanel::onConnect, this)); -	mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLFlickrAccountPanel::onDisconnect, this)); - -	setVisibleCallback(boost::bind(&LLFlickrAccountPanel::onVisibilityChange, this, _2)); -} - -BOOL LLFlickrAccountPanel::postBuild() -{ -	mAccountCaptionLabel = getChild<LLTextBox>("account_caption_label"); -	mAccountNameLabel = getChild<LLTextBox>("account_name_label"); -	mPanelButtons = getChild<LLUICtrl>("panel_buttons"); -	mConnectButton = getChild<LLUICtrl>("connect_btn"); -	mDisconnectButton = getChild<LLUICtrl>("disconnect_btn"); - -	return LLPanel::postBuild(); -} - -void LLFlickrAccountPanel::draw() -{ -	LLFlickrConnect::EConnectionState connection_state = LLFlickrConnect::instance().getConnectionState(); - -	//Disable the 'disconnect' button and the 'use another account' button when disconnecting in progress -	bool disconnecting = connection_state == LLFlickrConnect::FLICKR_DISCONNECTING; -	mDisconnectButton->setEnabled(!disconnecting); - -	//Disable the 'connect' button when a connection is in progress -	bool connecting = connection_state == LLFlickrConnect::FLICKR_CONNECTION_IN_PROGRESS; -	mConnectButton->setEnabled(!connecting); - -	LLPanel::draw(); -} - -void LLFlickrAccountPanel::onVisibilityChange(BOOL visible) -{ -	if(visible) -	{ -		LLEventPumps::instance().obtain("FlickrConnectState").stopListening("LLFlickrAccountPanel"); -		LLEventPumps::instance().obtain("FlickrConnectState").listen("LLFlickrAccountPanel", boost::bind(&LLFlickrAccountPanel::onFlickrConnectStateChange, this, _1)); - -		LLEventPumps::instance().obtain("FlickrConnectInfo").stopListening("LLFlickrAccountPanel"); -		LLEventPumps::instance().obtain("FlickrConnectInfo").listen("LLFlickrAccountPanel", boost::bind(&LLFlickrAccountPanel::onFlickrConnectInfoChange, this)); - -		//Connected -		if(LLFlickrConnect::instance().isConnected()) -		{ -			showConnectedLayout(); -		} -		//Check if connected (show disconnected layout in meantime) -		else -		{ -			showDisconnectedLayout(); -		} -        if ((LLFlickrConnect::instance().getConnectionState() == LLFlickrConnect::FLICKR_NOT_CONNECTED) || -            (LLFlickrConnect::instance().getConnectionState() == LLFlickrConnect::FLICKR_CONNECTION_FAILED)) -        { -            LLFlickrConnect::instance().checkConnectionToFlickr(); -        } -	} -	else -	{ -		LLEventPumps::instance().obtain("FlickrConnectState").stopListening("LLFlickrAccountPanel"); -		LLEventPumps::instance().obtain("FlickrConnectInfo").stopListening("LLFlickrAccountPanel"); -	} -} - -bool LLFlickrAccountPanel::onFlickrConnectStateChange(const LLSD& data) -{ -	if(LLFlickrConnect::instance().isConnected()) -	{ -		//In process of disconnecting so leave the layout as is -		if(data.get("enum").asInteger() != LLFlickrConnect::FLICKR_DISCONNECTING) -		{ -			showConnectedLayout(); -		} -	} -	else -	{ -		showDisconnectedLayout(); -	} - -	return false; -} - -bool LLFlickrAccountPanel::onFlickrConnectInfoChange() -{ -	LLSD info = LLFlickrConnect::instance().getInfo(); -	std::string clickable_name; - -	//Strings of format [http://www.somewebsite.com Click Me] become clickable text -	if(info.has("link") && info.has("name")) -	{ -		clickable_name = "[" + info["link"].asString() + " " + info["name"].asString() + "]"; -	} - -	mAccountNameLabel->setText(clickable_name); - -	return false; -} - -void LLFlickrAccountPanel::showConnectButton() -{ -	if(!mConnectButton->getVisible()) -	{ -		mConnectButton->setVisible(TRUE); -		mDisconnectButton->setVisible(FALSE); -	} -} - -void LLFlickrAccountPanel::hideConnectButton() -{ -	if(mConnectButton->getVisible()) -	{ -		mConnectButton->setVisible(FALSE); -		mDisconnectButton->setVisible(TRUE); -	} -} - -void LLFlickrAccountPanel::showDisconnectedLayout() -{ -	mAccountCaptionLabel->setText(getString("flickr_disconnected")); -	mAccountNameLabel->setText(std::string("")); -	showConnectButton(); -} - -void LLFlickrAccountPanel::showConnectedLayout() -{ -	LLFlickrConnect::instance().loadFlickrInfo(); - -	mAccountCaptionLabel->setText(getString("flickr_connected")); -	hideConnectButton(); -} - -void LLFlickrAccountPanel::onConnect() -{ -	LLFlickrConnect::instance().checkConnectionToFlickr(true); -} - -void LLFlickrAccountPanel::onDisconnect() -{ -	LLFlickrConnect::instance().disconnectFromFlickr(); -} - -//////////////////////// -//LLFloaterFlickr/////// -//////////////////////// - -LLFloaterFlickr::LLFloaterFlickr(const LLSD& key) : LLFloater(key), -    mFlickrPhotoPanel(NULL), -    mStatusErrorText(NULL), -    mStatusLoadingText(NULL), -    mStatusLoadingIndicator(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.Cancel", boost::bind(&LLFloaterFlickr::onCancel, this)); -} - -void LLFloaterFlickr::onClose(bool app_quitting) -{ -    LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); -    if (big_preview_floater) -    { -        big_preview_floater->closeOnFloaterOwnerClosing(this); -    } -	LLFloater::onClose(app_quitting); -} - -void LLFloaterFlickr::onCancel() -{ -    LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); -    if (big_preview_floater) -    { -        big_preview_floater->closeOnFloaterOwnerClosing(this); -    } -    closeFloater(); -} - -BOOL LLFloaterFlickr::postBuild() -{ -    // Keep tab of the Photo Panel -	mFlickrPhotoPanel = static_cast<LLFlickrPhotoPanel*>(getChild<LLUICtrl>("panel_flickr_photo")); -    // Connection status widgets -    mStatusErrorText = getChild<LLTextBox>("connection_error_text"); -    mStatusLoadingText = getChild<LLTextBox>("connection_loading_text"); -    mStatusLoadingIndicator = getChild<LLUICtrl>("connection_loading_indicator"); -	return LLFloater::postBuild(); -} - -void LLFloaterFlickr::showPhotoPanel() -{ -	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mFlickrPhotoPanel->getParent()); -	if (!parent) -	{ -		LL_WARNS() << "Cannot find panel container" << LL_ENDL; -		return; -	} - -	parent->selectTabPanel(mFlickrPhotoPanel); -} - -void LLFloaterFlickr::draw() -{ -    if (mStatusErrorText && mStatusLoadingText && mStatusLoadingIndicator) -    { -        mStatusErrorText->setVisible(false); -        mStatusLoadingText->setVisible(false); -        mStatusLoadingIndicator->setVisible(false); -        LLFlickrConnect::EConnectionState connection_state = LLFlickrConnect::instance().getConnectionState(); -        std::string status_text; -         -        switch (connection_state) -        { -        case LLFlickrConnect::FLICKR_NOT_CONNECTED: -            // No status displayed when first opening the panel and no connection done -        case LLFlickrConnect::FLICKR_CONNECTED: -            // When successfully connected, no message is displayed -        case LLFlickrConnect::FLICKR_POSTED: -            // No success message to show since we actually close the floater after successful posting completion -            break; -        case LLFlickrConnect::FLICKR_CONNECTION_IN_PROGRESS: -            // Connection loading indicator -            mStatusLoadingText->setVisible(true); -            status_text = LLTrans::getString("SocialFlickrConnecting"); -            mStatusLoadingText->setValue(status_text); -            mStatusLoadingIndicator->setVisible(true); -            break; -        case LLFlickrConnect::FLICKR_POSTING: -            // Posting indicator -            mStatusLoadingText->setVisible(true); -            status_text = LLTrans::getString("SocialFlickrPosting"); -            mStatusLoadingText->setValue(status_text); -            mStatusLoadingIndicator->setVisible(true); -			break; -        case LLFlickrConnect::FLICKR_CONNECTION_FAILED: -            // Error connecting to the service -            mStatusErrorText->setVisible(true); -            status_text = LLTrans::getString("SocialFlickrErrorConnecting"); -            mStatusErrorText->setValue(status_text); -            break; -        case LLFlickrConnect::FLICKR_POST_FAILED: -            // Error posting to the service -            mStatusErrorText->setVisible(true); -            status_text = LLTrans::getString("SocialFlickrErrorPosting"); -            mStatusErrorText->setValue(status_text); -            break; -		case LLFlickrConnect::FLICKR_DISCONNECTING: -			// Disconnecting loading indicator -			mStatusLoadingText->setVisible(true); -			status_text = LLTrans::getString("SocialFlickrDisconnecting"); -			mStatusLoadingText->setValue(status_text); -			mStatusLoadingIndicator->setVisible(true); -			break; -		case LLFlickrConnect::FLICKR_DISCONNECT_FAILED: -			// Error disconnecting from the service -			mStatusErrorText->setVisible(true); -			status_text = LLTrans::getString("SocialFlickrErrorDisconnecting"); -			mStatusErrorText->setValue(status_text); -			break; -        } -    } -	LLFloater::draw(); -} - diff --git a/indra/newview/llfloaterflickr.h b/indra/newview/llfloaterflickr.h deleted file mode 100644 index 74da3bcea9..0000000000 --- a/indra/newview/llfloaterflickr.h +++ /dev/null @@ -1,134 +0,0 @@ -/**  -* @file   llfloaterflickr.h -* @brief  Header file for llfloaterflickr -* @author cho@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ -#ifndef LL_LLFLOATERFLICKR_H -#define LL_LLFLOATERFLICKR_H - -#include "llfloater.h" -#include "lltextbox.h" -#include "llviewertexture.h" - -class LLIconCtrl; -class LLCheckBoxCtrl; -class LLSnapshotLivePreview; -class LLFloaterBigPreview; - -class LLFlickrPhotoPanel : public LLPanel -{ -public: -	LLFlickrPhotoPanel(); -	~LLFlickrPhotoPanel(); - -	BOOL postBuild(); -	S32 notify(const LLSD& info); -	void draw(); - -	LLSnapshotLivePreview* getPreviewView(); -	void onVisibilityChange(BOOL new_visibility); -	void onClickNewSnapshot(); -    void onClickBigPreview(); -	void onSend(); -	bool onFlickrConnectStateChange(const LLSD& data); - -	void sendPhoto(); -	void clearAndClose(); - -	void updateControls(); -	void updateResolution(BOOL do_update); -	void checkAspectRatio(S32 index); -	LLUICtrl* getRefreshBtn(); - -private: -    bool isPreviewVisible(); -    void attachPreview(); - -	LLHandle<LLView> mPreviewHandle; - -	LLUICtrl * mResolutionComboBox; -	LLUICtrl * mFilterComboBox; -	LLUICtrl * mRefreshBtn; -	LLUICtrl * mWorkingLabel; -	LLUICtrl * mThumbnailPlaceholder; -	LLUICtrl * mTitleTextBox; -	LLUICtrl * mDescriptionTextBox; -	LLUICtrl * mLocationCheckbox; -	LLUICtrl * mTagsTextBox; -	LLUICtrl * mRatingComboBox; -	LLUICtrl * mPostButton; -	LLUICtrl * mCancelButton; -	LLButton * mBtnPreview; - -    LLFloaterBigPreview * mBigPreviewFloater; -}; - -class LLFlickrAccountPanel : public LLPanel -{ -public: -	LLFlickrAccountPanel(); -	BOOL postBuild(); -	void draw(); - -private: -	void onVisibilityChange(BOOL new_visibility); -	bool onFlickrConnectStateChange(const LLSD& data); -	bool onFlickrConnectInfoChange(); -	void onConnect(); -	void onUseAnotherAccount(); -	void onDisconnect(); - -	void showConnectButton(); -	void hideConnectButton(); -	void showDisconnectedLayout(); -	void showConnectedLayout(); - -	LLTextBox * mAccountCaptionLabel; -	LLTextBox * mAccountNameLabel; -	LLUICtrl * mPanelButtons; -	LLUICtrl * mConnectButton; -	LLUICtrl * mDisconnectButton; -}; - - -class LLFloaterFlickr : public LLFloater -{ -public: -	LLFloaterFlickr(const LLSD& key); -	BOOL postBuild(); -	void draw(); -	void onClose(bool app_quitting); -	void onCancel(); -	 -	void showPhotoPanel(); - -private: -	LLFlickrPhotoPanel* mFlickrPhotoPanel; -    LLTextBox* mStatusErrorText; -    LLTextBox* mStatusLoadingText; -    LLUICtrl*  mStatusLoadingIndicator; -}; - -#endif // LL_LLFLOATERFLICKR_H - diff --git a/indra/newview/llfloateroutfitsnapshot.cpp b/indra/newview/llfloateroutfitsnapshot.cpp index bfcd1b8b47..dccef88e41 100644 --- a/indra/newview/llfloateroutfitsnapshot.cpp +++ b/indra/newview/llfloateroutfitsnapshot.cpp @@ -31,8 +31,6 @@  #include "llagent.h"  #include "llfloaterreg.h" -#include "llfloaterflickr.h" -#include "llfloatertwitter.h"  #include "llimagefiltersmanager.h"  #include "llcheckboxctrl.h"  #include "llcombobox.h" diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 2798e375c7..ef7a9fd536 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -29,8 +29,6 @@  #include "llfloatersnapshot.h"  #include "llfloaterreg.h" -#include "llfloaterflickr.h" -#include "llfloatertwitter.h"  #include "llimagefiltersmanager.h"  #include "llcheckboxctrl.h"  #include "llcombobox.h" @@ -1240,10 +1238,7 @@ BOOL LLFloaterSnapshot::isWaitingState()  BOOL LLFloaterSnapshotBase::ImplBase::updatePreviewList(bool initialized)  { -	LLFloaterFlickr* floater_flickr = LLFloaterReg::findTypedInstance<LLFloaterFlickr>("flickr"); -	LLFloaterTwitter* floater_twitter = LLFloaterReg::findTypedInstance<LLFloaterTwitter>("twitter"); - -	if (!initialized && !floater_flickr && !floater_twitter) +	if (!initialized)  		return FALSE;  	BOOL changed = FALSE; diff --git a/indra/newview/llfloatertwitter.cpp b/indra/newview/llfloatertwitter.cpp deleted file mode 100644 index 2b33bc6935..0000000000 --- a/indra/newview/llfloatertwitter.cpp +++ /dev/null @@ -1,810 +0,0 @@ -/**  -* @file llfloatertwitter.cpp -* @brief Implementation of llfloatertwitter -* @author cho@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llfloatertwitter.h" - -#include "llagent.h" -#include "llagentui.h" -#include "llcheckboxctrl.h" -#include "llcombobox.h" -#include "lltwitterconnect.h" -#include "llfloaterbigpreview.h" -#include "llfloaterreg.h" -#include "lliconctrl.h" -#include "llimagefiltersmanager.h" -#include "llresmgr.h"		// LLLocale -#include "llsdserialize.h" -#include "llloadingindicator.h" -#include "llslurl.h" -#include "lltrans.h" -#include "llsnapshotlivepreview.h" -#include "llviewerregion.h" -#include "llviewercontrol.h" -#include "llviewermedia.h" -#include "lltabcontainer.h" -#include "lltexteditor.h" - -static LLPanelInjector<LLTwitterPhotoPanel> t_panel_photo("lltwitterphotopanel"); -static LLPanelInjector<LLTwitterAccountPanel> t_panel_account("lltwitteraccountpanel"); - -const std::string DEFAULT_PHOTO_LOCATION_URL = "http://maps.secondlife.com/"; -const std::string DEFAULT_PHOTO_QUERY_PARAMETERS = "?sourceid=slshare_photo&utm_source=twitter&utm_medium=photo&utm_campaign=slshare"; -const std::string DEFAULT_STATUS_TEXT = " #SecondLife"; - -/////////////////////////// -//LLTwitterPhotoPanel/////// -/////////////////////////// - -LLTwitterPhotoPanel::LLTwitterPhotoPanel() : -mResolutionComboBox(NULL), -mRefreshBtn(NULL), -mBtnPreview(NULL), -mWorkingLabel(NULL), -mThumbnailPlaceholder(NULL), -mStatusCounterLabel(NULL), -mStatusTextBox(NULL), -mLocationCheckbox(NULL), -mPhotoCheckbox(NULL), -mBigPreviewFloater(NULL), -mPostButton(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.SendPhoto", boost::bind(&LLTwitterPhotoPanel::onSend, this)); -	mCommitCallbackRegistrar.add("SocialSharing.RefreshPhoto", boost::bind(&LLTwitterPhotoPanel::onClickNewSnapshot, this)); -	mCommitCallbackRegistrar.add("SocialSharing.BigPreview", boost::bind(&LLTwitterPhotoPanel::onClickBigPreview, this)); -} - -LLTwitterPhotoPanel::~LLTwitterPhotoPanel() -{ -	if(mPreviewHandle.get()) -	{ -		mPreviewHandle.get()->die(); -	} -} - -BOOL LLTwitterPhotoPanel::postBuild() -{ -	setVisibleCallback(boost::bind(&LLTwitterPhotoPanel::onVisibilityChange, this, _2)); -	 -	mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); -	mResolutionComboBox->setValue("[i800,i600]"); // hardcoded defaults ftw! -	mResolutionComboBox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::updateResolution, this, TRUE)); -	mFilterComboBox = getChild<LLUICtrl>("filters_combobox"); -	mFilterComboBox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::updateResolution, this, TRUE)); -	mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn"); -	mBtnPreview = getChild<LLButton>("big_preview_btn"); -    mWorkingLabel = getChild<LLUICtrl>("working_lbl"); -	mThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder"); -	mStatusCounterLabel = getChild<LLUICtrl>("status_counter_label"); -	mStatusTextBox = getChild<LLUICtrl>("photo_status"); -	mStatusTextBox->setValue(DEFAULT_STATUS_TEXT); -	mLocationCheckbox = getChild<LLUICtrl>("add_location_cb"); -	mLocationCheckbox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::onAddLocationToggled, this)); -	mPhotoCheckbox = getChild<LLUICtrl>("add_photo_cb"); -	mPhotoCheckbox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::onAddPhotoToggled, this)); -	mPostButton = getChild<LLUICtrl>("post_photo_btn"); -	mCancelButton = getChild<LLUICtrl>("cancel_photo_btn"); -	mBigPreviewFloater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); - -	// Update filter list -    std::vector<std::string> filter_list = LLImageFiltersManager::getInstance()->getFiltersList(); -	LLComboBox* filterbox = static_cast<LLComboBox *>(mFilterComboBox); -    for (U32 i = 0; i < filter_list.size(); i++) -	{ -        filterbox->add(filter_list[i]); -    } - -	return LLPanel::postBuild(); -} - -// virtual -S32 LLTwitterPhotoPanel::notify(const LLSD& info) -{ -	if (info.has("snapshot-updating")) -	{ -        // Disable the Post button and whatever else while the snapshot is not updated -        // updateControls(); -		return 1; -	} -     -	if (info.has("snapshot-updated")) -	{ -        // Enable the send/post/save buttons. -        updateControls(); -         -		// The refresh button is initially hidden. We show it after the first update, -		// i.e. after snapshot is taken -		LLUICtrl * refresh_button = getRefreshBtn(); -		if (!refresh_button->getVisible()) -		{ -			refresh_button->setVisible(true); -		} -		return 1; -	} -     -	return 0; -} - -void LLTwitterPhotoPanel::draw() -{  -	LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); - -    // Enable interaction only if no transaction with the service is on-going (prevent duplicated posts) -    bool no_ongoing_connection = !(LLTwitterConnect::instance().isTransactionOngoing()); -    bool photo_checked = mPhotoCheckbox->getValue().asBoolean(); -    mCancelButton->setEnabled(no_ongoing_connection); -    mStatusTextBox->setEnabled(no_ongoing_connection); -    mResolutionComboBox->setEnabled(no_ongoing_connection && photo_checked); -    mFilterComboBox->setEnabled(no_ongoing_connection && photo_checked); -    mRefreshBtn->setEnabled(no_ongoing_connection && photo_checked); -    mBtnPreview->setEnabled(no_ongoing_connection); -    mLocationCheckbox->setEnabled(no_ongoing_connection); -    mPhotoCheckbox->setEnabled(no_ongoing_connection); - -	bool add_location = mLocationCheckbox->getValue().asBoolean(); -	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); -	updateStatusTextLength(false); - -    // Reassign the preview floater if we have the focus and the preview exists -    if (hasFocus() && isPreviewVisible()) -    { -        attachPreview(); -    } -     -    // Toggle the button state as appropriate -    bool preview_active = (isPreviewVisible() && mBigPreviewFloater->isFloaterOwner(getParentByType<LLFloater>())); -	mBtnPreview->setToggleState(preview_active); -     -    // Display the preview if one is available -	if (previewp && previewp->getThumbnailImage()) -	{ -		const LLRect& thumbnail_rect = mThumbnailPlaceholder->getRect(); -		const S32 thumbnail_w = previewp->getThumbnailWidth(); -		const S32 thumbnail_h = previewp->getThumbnailHeight(); - -		// calc preview offset within the preview rect -		const S32 local_offset_x = (thumbnail_rect.getWidth()  - thumbnail_w) / 2 ; -		const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; -		S32 offset_x = thumbnail_rect.mLeft + local_offset_x; -		S32 offset_y = thumbnail_rect.mBottom + local_offset_y; -         -		gGL.matrixMode(LLRender::MM_MODELVIEW); -		// Apply floater transparency to the texture unless the floater is focused. -		F32 alpha = (add_photo ? (getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency()) : 0.5f); -		LLColor4 color = LLColor4::white; -		gl_draw_scaled_image(offset_x, offset_y,  -			thumbnail_w, thumbnail_h, -			previewp->getThumbnailImage(), color % alpha); -	} - -    // Update the visibility of the working (computing preview) label -    mWorkingLabel->setVisible(!(previewp && previewp->getSnapshotUpToDate())); -     -    // Enable Post if we have a preview to send and no on going connection being processed -    mPostButton->setEnabled(no_ongoing_connection && (previewp && previewp->getSnapshotUpToDate()) && (add_photo || add_location || !mStatusTextBox->getValue().asString().empty())); -     -    // Draw the rest of the panel on top of it -	LLPanel::draw(); -} - -LLSnapshotLivePreview* LLTwitterPhotoPanel::getPreviewView() -{ -	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)mPreviewHandle.get(); -	return previewp; -} - -void LLTwitterPhotoPanel::onVisibilityChange(BOOL visible) -{ -	if (visible) -	{ -		if (mPreviewHandle.get()) -		{ -			LLSnapshotLivePreview* preview = getPreviewView(); -			if(preview) -			{ -				LL_DEBUGS() << "opened, updating snapshot" << LL_ENDL; -				preview->updateSnapshot(TRUE); -			} -		} -		else -		{ -			LLRect full_screen_rect = getRootView()->getRect(); -			LLSnapshotLivePreview::Params p; -			p.rect(full_screen_rect); -			LLSnapshotLivePreview* previewp = new LLSnapshotLivePreview(p); -			mPreviewHandle = previewp->getHandle(); - -            previewp->setContainer(this); -            previewp->setSnapshotType(LLSnapshotModel::SNAPSHOT_WEB); -            previewp->setSnapshotFormat(LLSnapshotModel::SNAPSHOT_FORMAT_JPEG); -            previewp->setThumbnailSubsampled(TRUE);     // We want the preview to reflect the *saved* image -            previewp->setAllowRenderUI(FALSE);          // We do not want the rendered UI in our snapshots -            previewp->setAllowFullScreenPreview(FALSE);  // No full screen preview in SL Share mode -			previewp->setThumbnailPlaceholderRect(mThumbnailPlaceholder->getRect()); - -			updateControls(); -		} -	} -} - -void LLTwitterPhotoPanel::onAddLocationToggled() -{ -	bool add_location = mLocationCheckbox->getValue().asBoolean(); -	updateStatusTextLength(!add_location); -} - -void LLTwitterPhotoPanel::onAddPhotoToggled() -{ -	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); -	updateStatusTextLength(!add_photo); -} - -void LLTwitterPhotoPanel::onClickNewSnapshot() -{ -	LLSnapshotLivePreview* previewp = getPreviewView(); -	if (previewp) -	{ -		previewp->updateSnapshot(TRUE); -	} -} - -void LLTwitterPhotoPanel::onClickBigPreview() -{ -    // Toggle the preview -    if (isPreviewVisible()) -    { -        LLFloaterReg::hideInstance("big_preview"); -    } -    else -    { -        attachPreview(); -        LLFloaterReg::showInstance("big_preview"); -    } -} - -bool LLTwitterPhotoPanel::isPreviewVisible() -{ -    return (mBigPreviewFloater && mBigPreviewFloater->getVisible()); -} - -void LLTwitterPhotoPanel::attachPreview() -{ -    if (mBigPreviewFloater) -    { -        LLSnapshotLivePreview* previewp = getPreviewView(); -        mBigPreviewFloater->setPreview(previewp); -        mBigPreviewFloater->setFloaterOwner(getParentByType<LLFloater>()); -    } -} - -void LLTwitterPhotoPanel::onSend() -{ -	LLEventPumps::instance().obtain("TwitterConnectState").stopListening("LLTwitterPhotoPanel"); // just in case it is already listening -	LLEventPumps::instance().obtain("TwitterConnectState").listen("LLTwitterPhotoPanel", boost::bind(&LLTwitterPhotoPanel::onTwitterConnectStateChange, this, _1)); -	 -	// Connect to Twitter if necessary and then post -	if (LLTwitterConnect::instance().isConnected()) -	{ -		sendPhoto(); -	} -	else -	{ -		LLTwitterConnect::instance().checkConnectionToTwitter(true); -	} -} - -bool LLTwitterPhotoPanel::onTwitterConnectStateChange(const LLSD& data) -{ -	switch (data.get("enum").asInteger()) -	{ -		case LLTwitterConnect::TWITTER_CONNECTED: -			sendPhoto(); -			break; - -		case LLTwitterConnect::TWITTER_POSTED: -			LLEventPumps::instance().obtain("TwitterConnectState").stopListening("LLTwitterPhotoPanel"); -			clearAndClose(); -			break; -	} - -	return false; -} - -void LLTwitterPhotoPanel::sendPhoto() -{ -	// Get the status text -	std::string status = mStatusTextBox->getValue().asString(); -	 -	// Add the location if required -	bool add_location = mLocationCheckbox->getValue().asBoolean(); -	if (add_location) -	{ -		// Get the SLURL for the location -		LLSLURL slurl; -		LLAgentUI::buildSLURL(slurl); -		std::string slurl_string = slurl.getSLURLString(); - -		// Use a valid http:// URL if the scheme is secondlife://  -		LLURI slurl_uri(slurl_string); -		if (slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME) -		{ -			slurl_string = DEFAULT_PHOTO_LOCATION_URL; -		} - -		// Add query parameters so Google Analytics can track incoming clicks! -		slurl_string += DEFAULT_PHOTO_QUERY_PARAMETERS; - -		// Add it to the status (pretty crude, but we don't have a better option with photos) -		if (status.empty()) -			status = slurl_string; -		else -			status = status + " " + slurl_string; -	} - -	// Add the photo if required -	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); -	if (add_photo) -	{ -		// Get the image -		LLSnapshotLivePreview* previewp = getPreviewView(); -	 -		// Post to Twitter -		LLTwitterConnect::instance().uploadPhoto(previewp->getFormattedImage(), status); -	} -	else -	{ -		// Just post the status to Twitter -		LLTwitterConnect::instance().updateStatus(status); -	} - -	updateControls(); -} - -void LLTwitterPhotoPanel::clearAndClose() -{ -	mStatusTextBox->setValue(DEFAULT_STATUS_TEXT); - -	LLFloater* floater = getParentByType<LLFloater>(); -	if (floater) -	{ -		floater->closeFloater(); -        if (mBigPreviewFloater) -        { -            mBigPreviewFloater->closeOnFloaterOwnerClosing(floater); -        } -	} -} - -void LLTwitterPhotoPanel::updateStatusTextLength(BOOL restore_old_status_text) -{ -	bool add_location = mLocationCheckbox->getValue().asBoolean(); - -	// Restrict the status text length to Twitter's character limit -	LLTextEditor* status_text_box = dynamic_cast<LLTextEditor*>(mStatusTextBox); -	if (status_text_box) -	{ -		int max_status_length = 280 - (add_location ? 40 : 0); -		status_text_box->setMaxTextLength(max_status_length); -		if (restore_old_status_text) -		{ -			if (mOldStatusText.length() > status_text_box->getText().length() && status_text_box->getText() == mOldStatusText.substr(0, status_text_box->getText().length())) -			{ -				status_text_box->setText(mOldStatusText); -			} -			if (mOldStatusText.length() <= max_status_length) -			{ -				mOldStatusText = ""; -			} -		} -		if (status_text_box->getText().length() > max_status_length) -		{ -			if (mOldStatusText.length() < status_text_box->getText().length() || status_text_box->getText() != mOldStatusText.substr(0, status_text_box->getText().length())) -			{ -				mOldStatusText = status_text_box->getText(); -			} -			status_text_box->setText(mOldStatusText.substr(0, max_status_length)); -		} - -		// Update the status character counter -		int characters_remaining = max_status_length - status_text_box->getText().length(); -		mStatusCounterLabel->setValue(characters_remaining); -	} - -} - -void LLTwitterPhotoPanel::updateControls() -{ -	LLSnapshotLivePreview* previewp = getPreviewView(); -	BOOL got_snap = previewp && previewp->getSnapshotUpToDate(); -     -	// *TODO: Separate maximum size for Web images from postcards -	LL_DEBUGS() << "Is snapshot up-to-date? " << got_snap << LL_ENDL; -     -	updateResolution(FALSE); -} - -void LLTwitterPhotoPanel::updateResolution(BOOL do_update) -{ -	LLComboBox* combobox = static_cast<LLComboBox *>(mResolutionComboBox); -	LLComboBox* filterbox = static_cast<LLComboBox *>(mFilterComboBox); - -	std::string sdstring = combobox->getSelectedValue(); -	LLSD sdres; -	std::stringstream sstream(sdstring); -	LLSDSerialize::fromNotation(sdres, sstream, sdstring.size()); - -	S32 width = sdres[0]; -	S32 height = sdres[1]; - -    // Note : index 0 of the filter drop down is assumed to be "No filter" in whichever locale -    std::string filter_name = (filterbox->getCurrentIndex() ? filterbox->getSimple() : ""); - -	LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); -	if (previewp && combobox->getCurrentIndex() >= 0) -	{ -		S32 original_width = 0 , original_height = 0 ; -		previewp->getSize(original_width, original_height) ; - -		if (width == 0 || height == 0) -		{ -			// take resolution from current window size -			LL_DEBUGS() << "Setting preview res from window: " << gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << LL_ENDL; -			previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw()); -		} -		else -		{ -			// use the resolution from the selected pre-canned drop-down choice -			LL_DEBUGS() << "Setting preview res selected from combo: " << width << "x" << height << LL_ENDL; -			previewp->setSize(width, height); -		} - -		checkAspectRatio(width); - -		previewp->getSize(width, height); -		 -		if (original_width != width || original_height != height) -		{ -			previewp->setSize(width, height); -			if (do_update) -			{ -                previewp->updateSnapshot(TRUE); -				updateControls(); -			} -		} -        // Get the old filter, compare to the current one "filter_name" and set if changed -        std::string original_filter = previewp->getFilter(); -		if (original_filter != filter_name) -		{ -            previewp->setFilter(filter_name); -			if (do_update) -			{ -                previewp->updateSnapshot(FALSE, TRUE); -				updateControls(); -			} -		} -	} -} - -void LLTwitterPhotoPanel::checkAspectRatio(S32 index) -{ -	LLSnapshotLivePreview *previewp = getPreviewView() ; - -	BOOL keep_aspect = FALSE; - -	if (0 == index) // current window size -	{ -		keep_aspect = TRUE; -	} -	else // predefined resolution -	{ -		keep_aspect = FALSE; -	} - -	if (previewp) -	{ -		previewp->mKeepAspectRatio = keep_aspect; -	} -} - -LLUICtrl* LLTwitterPhotoPanel::getRefreshBtn() -{ -	return mRefreshBtn; -} - -/////////////////////////// -//LLTwitterAccountPanel////// -/////////////////////////// - -LLTwitterAccountPanel::LLTwitterAccountPanel() :  -mAccountCaptionLabel(NULL), -mAccountNameLabel(NULL), -mPanelButtons(NULL), -mConnectButton(NULL), -mDisconnectButton(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLTwitterAccountPanel::onConnect, this)); -	mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLTwitterAccountPanel::onDisconnect, this)); - -	setVisibleCallback(boost::bind(&LLTwitterAccountPanel::onVisibilityChange, this, _2)); -} - -BOOL LLTwitterAccountPanel::postBuild() -{ -	mAccountCaptionLabel = getChild<LLTextBox>("account_caption_label"); -	mAccountNameLabel = getChild<LLTextBox>("account_name_label"); -	mPanelButtons = getChild<LLUICtrl>("panel_buttons"); -	mConnectButton = getChild<LLUICtrl>("connect_btn"); -	mDisconnectButton = getChild<LLUICtrl>("disconnect_btn"); - -	return LLPanel::postBuild(); -} - -void LLTwitterAccountPanel::draw() -{ -	LLTwitterConnect::EConnectionState connection_state = LLTwitterConnect::instance().getConnectionState(); - -	//Disable the 'disconnect' button and the 'use another account' button when disconnecting in progress -	bool disconnecting = connection_state == LLTwitterConnect::TWITTER_DISCONNECTING; -	mDisconnectButton->setEnabled(!disconnecting); - -	//Disable the 'connect' button when a connection is in progress -	bool connecting = connection_state == LLTwitterConnect::TWITTER_CONNECTION_IN_PROGRESS; -	mConnectButton->setEnabled(!connecting); - -	LLPanel::draw(); -} - -void LLTwitterAccountPanel::onVisibilityChange(BOOL visible) -{ -	if(visible) -	{ -		LLEventPumps::instance().obtain("TwitterConnectState").stopListening("LLTwitterAccountPanel"); -		LLEventPumps::instance().obtain("TwitterConnectState").listen("LLTwitterAccountPanel", boost::bind(&LLTwitterAccountPanel::onTwitterConnectStateChange, this, _1)); - -		LLEventPumps::instance().obtain("TwitterConnectInfo").stopListening("LLTwitterAccountPanel"); -		LLEventPumps::instance().obtain("TwitterConnectInfo").listen("LLTwitterAccountPanel", boost::bind(&LLTwitterAccountPanel::onTwitterConnectInfoChange, this)); - -		//Connected -		if(LLTwitterConnect::instance().isConnected()) -		{ -			showConnectedLayout(); -		} -		//Check if connected (show disconnected layout in meantime) -		else -		{ -			showDisconnectedLayout(); -		} -        if ((LLTwitterConnect::instance().getConnectionState() == LLTwitterConnect::TWITTER_NOT_CONNECTED) || -            (LLTwitterConnect::instance().getConnectionState() == LLTwitterConnect::TWITTER_CONNECTION_FAILED)) -        { -            LLTwitterConnect::instance().checkConnectionToTwitter(); -        } -	} -	else -	{ -		LLEventPumps::instance().obtain("TwitterConnectState").stopListening("LLTwitterAccountPanel"); -		LLEventPumps::instance().obtain("TwitterConnectInfo").stopListening("LLTwitterAccountPanel"); -	} -} - -bool LLTwitterAccountPanel::onTwitterConnectStateChange(const LLSD& data) -{ -	if(LLTwitterConnect::instance().isConnected()) -	{ -		//In process of disconnecting so leave the layout as is -		if(data.get("enum").asInteger() != LLTwitterConnect::TWITTER_DISCONNECTING) -		{ -			showConnectedLayout(); -		} -	} -	else -	{ -		showDisconnectedLayout(); -	} - -	return false; -} - -bool LLTwitterAccountPanel::onTwitterConnectInfoChange() -{ -	LLSD info = LLTwitterConnect::instance().getInfo(); -	std::string clickable_name; - -	//Strings of format [http://www.somewebsite.com Click Me] become clickable text -	if(info.has("link") && info.has("name")) -	{ -		clickable_name = "[" + info["link"].asString() + " " + info["name"].asString() + "]"; -	} - -	mAccountNameLabel->setText(clickable_name); - -	return false; -} - -void LLTwitterAccountPanel::showConnectButton() -{ -	if(!mConnectButton->getVisible()) -	{ -		mConnectButton->setVisible(TRUE); -		mDisconnectButton->setVisible(FALSE); -	} -} - -void LLTwitterAccountPanel::hideConnectButton() -{ -	if(mConnectButton->getVisible()) -	{ -		mConnectButton->setVisible(FALSE); -		mDisconnectButton->setVisible(TRUE); -	} -} - -void LLTwitterAccountPanel::showDisconnectedLayout() -{ -	mAccountCaptionLabel->setText(getString("twitter_disconnected")); -	mAccountNameLabel->setText(std::string("")); -	showConnectButton(); -} - -void LLTwitterAccountPanel::showConnectedLayout() -{ -	LLTwitterConnect::instance().loadTwitterInfo(); - -	mAccountCaptionLabel->setText(getString("twitter_connected")); -	hideConnectButton(); -} - -void LLTwitterAccountPanel::onConnect() -{ -	LLTwitterConnect::instance().checkConnectionToTwitter(true); -} - -void LLTwitterAccountPanel::onDisconnect() -{ -	LLTwitterConnect::instance().disconnectFromTwitter(); -} - -//////////////////////// -//LLFloaterTwitter/////// -//////////////////////// - -LLFloaterTwitter::LLFloaterTwitter(const LLSD& key) : LLFloater(key), -    mTwitterPhotoPanel(NULL), -    mStatusErrorText(NULL), -    mStatusLoadingText(NULL), -    mStatusLoadingIndicator(NULL) -{ -	mCommitCallbackRegistrar.add("SocialSharing.Cancel", boost::bind(&LLFloaterTwitter::onCancel, this)); -} - -void LLFloaterTwitter::onClose(bool app_quitting) -{ -    LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); -    if (big_preview_floater) -    { -        big_preview_floater->closeOnFloaterOwnerClosing(this); -    } -	LLFloater::onClose(app_quitting); -} - -void LLFloaterTwitter::onCancel() -{ -    LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview")); -    if (big_preview_floater) -    { -        big_preview_floater->closeOnFloaterOwnerClosing(this); -    } -    closeFloater(); -} - -BOOL LLFloaterTwitter::postBuild() -{ -    // Keep tab of the Photo Panel -	mTwitterPhotoPanel = static_cast<LLTwitterPhotoPanel*>(getChild<LLUICtrl>("panel_twitter_photo")); -    // Connection status widgets -    mStatusErrorText = getChild<LLTextBox>("connection_error_text"); -    mStatusLoadingText = getChild<LLTextBox>("connection_loading_text"); -    mStatusLoadingIndicator = getChild<LLUICtrl>("connection_loading_indicator"); -	return LLFloater::postBuild(); -} - -void LLFloaterTwitter::showPhotoPanel() -{ -	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mTwitterPhotoPanel->getParent()); -	if (!parent) -	{ -		LL_WARNS() << "Cannot find panel container" << LL_ENDL; -		return; -	} - -	parent->selectTabPanel(mTwitterPhotoPanel); -} - -void LLFloaterTwitter::draw() -{ -    if (mStatusErrorText && mStatusLoadingText && mStatusLoadingIndicator) -    { -        mStatusErrorText->setVisible(false); -        mStatusLoadingText->setVisible(false); -        mStatusLoadingIndicator->setVisible(false); -        LLTwitterConnect::EConnectionState connection_state = LLTwitterConnect::instance().getConnectionState(); -        std::string status_text; -         -        switch (connection_state) -        { -        case LLTwitterConnect::TWITTER_NOT_CONNECTED: -            // No status displayed when first opening the panel and no connection done -        case LLTwitterConnect::TWITTER_CONNECTED: -            // When successfully connected, no message is displayed -        case LLTwitterConnect::TWITTER_POSTED: -            // No success message to show since we actually close the floater after successful posting completion -            break; -        case LLTwitterConnect::TWITTER_CONNECTION_IN_PROGRESS: -            // Connection loading indicator -            mStatusLoadingText->setVisible(true); -            status_text = LLTrans::getString("SocialTwitterConnecting"); -            mStatusLoadingText->setValue(status_text); -            mStatusLoadingIndicator->setVisible(true); -            break; -        case LLTwitterConnect::TWITTER_POSTING: -            // Posting indicator -            mStatusLoadingText->setVisible(true); -            status_text = LLTrans::getString("SocialTwitterPosting"); -            mStatusLoadingText->setValue(status_text); -            mStatusLoadingIndicator->setVisible(true); -			break; -        case LLTwitterConnect::TWITTER_CONNECTION_FAILED: -            // Error connecting to the service -            mStatusErrorText->setVisible(true); -            status_text = LLTrans::getString("SocialTwitterErrorConnecting"); -            mStatusErrorText->setValue(status_text); -            break; -        case LLTwitterConnect::TWITTER_POST_FAILED: -            // Error posting to the service -            mStatusErrorText->setVisible(true); -            status_text = LLTrans::getString("SocialTwitterErrorPosting"); -            mStatusErrorText->setValue(status_text); -            break; -		case LLTwitterConnect::TWITTER_DISCONNECTING: -			// Disconnecting loading indicator -			mStatusLoadingText->setVisible(true); -			status_text = LLTrans::getString("SocialTwitterDisconnecting"); -			mStatusLoadingText->setValue(status_text); -			mStatusLoadingIndicator->setVisible(true); -			break; -		case LLTwitterConnect::TWITTER_DISCONNECT_FAILED: -			// Error disconnecting from the service -			mStatusErrorText->setVisible(true); -			status_text = LLTrans::getString("SocialTwitterErrorDisconnecting"); -			mStatusErrorText->setValue(status_text); -			break; -        } -    } -	LLFloater::draw(); -} - diff --git a/indra/newview/llfloatertwitter.h b/indra/newview/llfloatertwitter.h deleted file mode 100644 index d586799d18..0000000000 --- a/indra/newview/llfloatertwitter.h +++ /dev/null @@ -1,138 +0,0 @@ -/**  -* @file   llfloatertwitter.h -* @brief  Header file for llfloatertwitter -* @author cho@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ -#ifndef LL_LLFLOATERTWITTER_H -#define LL_LLFLOATERTWITTER_H - -#include "llfloater.h" -#include "lltextbox.h" -#include "llviewertexture.h" - -class LLIconCtrl; -class LLCheckBoxCtrl; -class LLSnapshotLivePreview; -class LLFloaterBigPreview; - -class LLTwitterPhotoPanel : public LLPanel -{ -public: -	LLTwitterPhotoPanel(); -	~LLTwitterPhotoPanel(); - -	BOOL postBuild(); -	void draw(); - -	LLSnapshotLivePreview* getPreviewView(); -	void onVisibilityChange(BOOL new_visibility); -	void onAddLocationToggled(); -	void onAddPhotoToggled(); -    void onClickBigPreview(); -	void onClickNewSnapshot(); -	void onSend(); -	S32 notify(const LLSD& info); -	bool onTwitterConnectStateChange(const LLSD& data); - -	void sendPhoto(); -	void clearAndClose(); - -	void updateStatusTextLength(BOOL restore_old_status_text); -	void updateControls(); -	void updateResolution(BOOL do_update); -	void checkAspectRatio(S32 index); -	LLUICtrl* getRefreshBtn(); - -private: -    bool isPreviewVisible(); -    void attachPreview(); - -	LLHandle<LLView> mPreviewHandle; - -	LLUICtrl * mResolutionComboBox; -	LLUICtrl * mFilterComboBox; -	LLUICtrl * mRefreshBtn; -	LLUICtrl * mWorkingLabel; -	LLUICtrl * mThumbnailPlaceholder; -	LLUICtrl * mStatusCounterLabel; -	LLUICtrl * mStatusTextBox; -	LLUICtrl * mLocationCheckbox; -	LLUICtrl * mPhotoCheckbox; -	LLUICtrl * mPostButton; -	LLUICtrl * mCancelButton; -	LLButton * mBtnPreview; - -    LLFloaterBigPreview * mBigPreviewFloater; -     -	std::string mOldStatusText; -}; - -class LLTwitterAccountPanel : public LLPanel -{ -public: -	LLTwitterAccountPanel(); -	BOOL postBuild(); -	void draw(); - -private: -	void onVisibilityChange(BOOL new_visibility); -	bool onTwitterConnectStateChange(const LLSD& data); -	bool onTwitterConnectInfoChange(); -	void onConnect(); -	void onUseAnotherAccount(); -	void onDisconnect(); - -	void showConnectButton(); -	void hideConnectButton(); -	void showDisconnectedLayout(); -	void showConnectedLayout(); - -	LLTextBox * mAccountCaptionLabel; -	LLTextBox * mAccountNameLabel; -	LLUICtrl * mPanelButtons; -	LLUICtrl * mConnectButton; -	LLUICtrl * mDisconnectButton; -}; - - -class LLFloaterTwitter : public LLFloater -{ -public: -	LLFloaterTwitter(const LLSD& key); -	BOOL postBuild(); -	void draw(); -	void onClose(bool app_quitting); -	void onCancel(); - -	void showPhotoPanel(); - -private: -	LLTwitterPhotoPanel* mTwitterPhotoPanel; -    LLTextBox* mStatusErrorText; -    LLTextBox* mStatusLoadingText; -    LLUICtrl*  mStatusLoadingIndicator; -}; - -#endif // LL_LLFLOATERTWITTER_H - diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index c591dfacaf..23fd6d9c8e 100644 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -30,8 +30,6 @@  #include "lliconctrl.h"  #include "llfloaterreg.h"  #include "llhttpconstants.h" -#include "llflickrconnect.h" -#include "lltwitterconnect.h"  #include "lllayoutstack.h"  #include "llpluginclassmedia.h"  #include "llprogressbar.h" @@ -288,26 +286,6 @@ void LLFloaterWebContent::onOpen(const LLSD& key)  //virtual  void LLFloaterWebContent::onClose(bool app_quitting)  { -    // If we close the web browsing window showing the Flickr login, we need to signal to this object that the connection will not happen -	// MAINT-3440 note change here to use findInstance and not getInstance - latter creates an instance if it's not there which is bad. -	LLFloater* flickr_web = LLFloaterReg::findInstance("flickr_web"); -    if (flickr_web == this) -    { -        if (!LLFlickrConnect::instance().isConnected()) -        { -            LLFlickrConnect::instance().setConnectionState(LLFlickrConnect::FLICKR_CONNECTION_FAILED); -        } -    } -	// Same with Twitter -	// MAINT-3440 note change here to use findInstance and not getInstance - latter creates an instance if it's not there which is bad. -	LLFloater* twitter_web = LLFloaterReg::findInstance("twitter_web"); -    if (twitter_web == this) -    { -        if (!LLTwitterConnect::instance().isConnected()) -        { -            LLTwitterConnect::instance().setConnectionState(LLTwitterConnect::TWITTER_CONNECTION_FAILED); -        } -    }  	LLViewerMedia::getInstance()->proxyWindowClosed(mUUID);  	destroy();  } diff --git a/indra/newview/llimagefiltersmanager.cpp b/indra/newview/llimagefiltersmanager.cpp index c23cdc8103..3b8adc1610 100644 --- a/indra/newview/llimagefiltersmanager.cpp +++ b/indra/newview/llimagefiltersmanager.cpp @@ -1,6 +1,6 @@  /**    * @file llimagefiltersmanager.cpp - * @brief Load image filters list and retrieve their path. Mostly used for Flickr UI at the moment. + * @brief Load image filters list and retrieve their path.   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h index f1ed3cf1c3..d06212d85a 100644 --- a/indra/newview/llimagefiltersmanager.h +++ b/indra/newview/llimagefiltersmanager.h @@ -1,6 +1,6 @@  /**    * @file llimagefiltersmanager.h - * @brief Load image filters list and retrieve their path. Mostly used for Flickr UI at the moment. + * @brief Load image filters list and retrieve their path.   *   * $LicenseInfo:firstyear=2000&license=viewerlgpl$   * Second Life Viewer Source Code diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 23747a8efd..1a3e946127 100644 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -32,8 +32,6 @@  #include "llfloatersnapshot.h" // FIXME: create a snapshot model  #include "llfloaterreg.h" -#include "llfloaterflickr.h" -#include "llfloatertwitter.h"  /**   * Provides several ways to save a snapshot. @@ -58,8 +56,6 @@ private:  	void onSaveToEmail();  	void onSaveToInventory();  	void onSaveToComputer(); -	void onSendToTwitter(); -	void onSendToFlickr();  	LLFloaterSnapshotBase* mSnapshotFloater;  }; @@ -72,8 +68,7 @@ LLPanelSnapshotOptions::LLPanelSnapshotOptions()  	mCommitCallbackRegistrar.add("Snapshot.SaveToEmail",		boost::bind(&LLPanelSnapshotOptions::onSaveToEmail,		this));  	mCommitCallbackRegistrar.add("Snapshot.SaveToInventory",	boost::bind(&LLPanelSnapshotOptions::onSaveToInventory,	this));  	mCommitCallbackRegistrar.add("Snapshot.SaveToComputer",		boost::bind(&LLPanelSnapshotOptions::onSaveToComputer,	this)); -	mCommitCallbackRegistrar.add("Snapshot.SendToTwitter",		boost::bind(&LLPanelSnapshotOptions::onSendToTwitter, this)); -	mCommitCallbackRegistrar.add("Snapshot.SendToFlickr",		boost::bind(&LLPanelSnapshotOptions::onSendToFlickr, this)); +  	LLGlobalEconomy::getInstance()->addObserver(this);  } @@ -135,26 +130,3 @@ void LLPanelSnapshotOptions::onSaveToComputer()  	openPanel("panel_snapshot_local");  } -void LLPanelSnapshotOptions::onSendToTwitter() -{ -	LLFloaterReg::hideInstance("snapshot"); - -	LLFloaterTwitter* twitter_floater = dynamic_cast<LLFloaterTwitter*>(LLFloaterReg::getInstance("twitter")); -	if (twitter_floater) -	{ -		twitter_floater->showPhotoPanel(); -	} -	LLFloaterReg::showInstance("twitter"); -} - -void LLPanelSnapshotOptions::onSendToFlickr() -{ -	LLFloaterReg::hideInstance("snapshot"); - -	LLFloaterFlickr* flickr_floater = dynamic_cast<LLFloaterFlickr*>(LLFloaterReg::getInstance("flickr")); -	if (flickr_floater) -	{ -		flickr_floater->showPhotoPanel(); -	} -	LLFloaterReg::showInstance("flickr"); -} diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index f5fea9dece..8fef3ff1c0 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -34,8 +34,6 @@  #include "lleconomy.h"  #include "llfloaterperms.h"  #include "llfloaterreg.h" -#include "llfloaterflickr.h" -#include "llfloatertwitter.h"  #include "llimagefilter.h"  #include "llimagefiltersmanager.h"  #include "llimagebmp.h" diff --git a/indra/newview/lltwitterconnect.cpp b/indra/newview/lltwitterconnect.cpp deleted file mode 100644 index b2d2fa9d77..0000000000 --- a/indra/newview/lltwitterconnect.cpp +++ /dev/null @@ -1,576 +0,0 @@ -/**  - * @file lltwitterconnect.h - * @author Merov, Cho - * @brief Connection to Twitter Service - * - * $LicenseInfo:firstyear=2013&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2013, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "lltwitterconnect.h" -#include "llflickrconnect.h" - -#include "llagent.h" -#include "llcallingcard.h"			// for LLAvatarTracker -#include "llcommandhandler.h" -#include "llnotificationsutil.h" -#include "llurlaction.h" -#include "llimagepng.h" -#include "llimagejpeg.h" -#include "lltrans.h" -#include "llevents.h" -#include "llviewerregion.h" - -#include "llfloaterwebcontent.h" -#include "llfloaterreg.h" -#include "llcorehttputil.h" - -boost::scoped_ptr<LLEventPump> LLTwitterConnect::sStateWatcher(new LLEventStream("TwitterConnectState")); -boost::scoped_ptr<LLEventPump> LLTwitterConnect::sInfoWatcher(new LLEventStream("TwitterConnectInfo")); -boost::scoped_ptr<LLEventPump> LLTwitterConnect::sContentWatcher(new LLEventStream("TwitterConnectContent")); - -// Local functions -void log_twitter_connect_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description) -{ -    // Note: 302 (redirect) is *not* an error that warrants logging -    if (status != 302) -    { -		LL_WARNS("TwitterConnect") << request << " request failed with a " << status << " " << reason << ". Reason: " << code << " (" << description << ")" << LL_ENDL; -    } -} - -void toast_user_for_twitter_success() -{ -	LLSD args; -    args["MESSAGE"] = LLTrans::getString("twitter_post_success"); -    LLNotificationsUtil::add("TwitterConnect", args); -} - -class LLTwitterConnectHandler : public LLCommandHandler -{ -public: -    LLTwitterConnectHandler() : LLCommandHandler("fbc", UNTRUSTED_THROTTLE) {} - -    bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web) -    { -        if (tokens.size() >= 1) -        { -            if (tokens[0].asString() == "connect") -            { -                if (tokens.size() >= 2 && tokens[1].asString() == "twitter") -                { -                    // this command probably came from the twitter_web browser, so close it -                    LLFloaterReg::hideInstance("twitter_web"); - -                    // connect to twitter -                    if (query_map.has("oauth_token")) -                    { -                        LLTwitterConnect::instance().connectToTwitter(query_map["oauth_token"], query_map.get("oauth_verifier")); -                    } -                    return true; -                } -                else if (tokens.size() >= 2 && tokens[1].asString() == "flickr") -                { -                    // this command probably came from the flickr_web browser, so close it -                    LLFloaterReg::hideInstance("flickr_web"); - -                    // connect to flickr -                    if (query_map.has("oauth_token")) -                    { -                        LLFlickrConnect::instance().connectToFlickr(query_map["oauth_token"], query_map.get("oauth_verifier")); -                    } -                    return true; -                } -            } -        } -        return false; -    } -}; -LLTwitterConnectHandler gTwitterConnectHandler; - - -/////////////////////////////////////////////////////////////////////////////// -// -void LLTwitterConnect::twitterConnectCoro(std::string requestToken, std::string oauthVerifier) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("TwitterConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD body; -    if (!requestToken.empty()) -        body["request_token"] = requestToken; -    if (!oauthVerifier.empty()) -        body["oauth_verifier"] = oauthVerifier; - -    LLSD result = httpAdapter->putAndSuspend(httpRequest, getTwitterConnectURL("/connection"), body, httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status) -    { -        if ( status == LLCore::HttpStatus(HTTP_FOUND) ) -        { -            std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -            if (location.empty()) -            { -                LL_WARNS("FlickrConnect") << "Missing Location header " << LL_ENDL; -            } -            else -            { -                openTwitterWeb(location); -            } -        } -        else -        { -            LL_WARNS("TwitterConnect") << "Connection failed " << status.toString() << LL_ENDL; -            setConnectionState(LLTwitterConnect::TWITTER_CONNECTION_FAILED); -            log_twitter_connect_error("Connect", status.getStatus(), status.toString(), -                result.get("error_code"), result.get("error_description")); -        } -    } -    else -    { -        LL_DEBUGS("TwitterConnect") << "Connect successful. " << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_CONNECTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -bool LLTwitterConnect::testShareStatus(LLSD &result) -{ -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (status) -        return true; - -    if (status == LLCore::HttpStatus(HTTP_FOUND)) -    { -        std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -        if (location.empty()) -        { -            LL_WARNS("TwitterConnect") << "Missing Location header " << LL_ENDL; -        } -        else -        { -            openTwitterWeb(location); -        } -    } -    if (status == LLCore::HttpStatus(HTTP_NOT_FOUND)) -    { -        LL_DEBUGS("TwitterConnect") << "Not connected. " << LL_ENDL; -        connectToTwitter(); -    } -    else -    { -        LL_WARNS("TwitterConnect") << "HTTP Status error " << status.toString() << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_POST_FAILED); -        log_twitter_connect_error("Share", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    return false; -} - -void LLTwitterConnect::twitterShareCoro(std::string route, LLSD share) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("TwitterConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->postAndSuspend(httpRequest, getTwitterConnectURL(route, true), share, httpOpts); - -    if (testShareStatus(result)) -    { -        toast_user_for_twitter_success(); -        LL_DEBUGS("TwitterConnect") << "Post successful. " << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_POSTED); -    } -} - -void LLTwitterConnect::twitterShareImageCoro(LLPointer<LLImageFormatted> image, std::string status) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("FlickrConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    std::string imageFormat; -    if (dynamic_cast<LLImagePNG*>(image.get())) -    { -        imageFormat = "png"; -    } -    else if (dynamic_cast<LLImageJPEG*>(image.get())) -    { -        imageFormat = "jpg"; -    } -    else -    { -        LL_WARNS() << "Image to upload is not a PNG or JPEG" << LL_ENDL; -        return; -    } - -    // All this code is mostly copied from LLWebProfile::post() -    const std::string boundary = "----------------------------0123abcdefab"; - -    std::string contentType = "multipart/form-data; boundary=" + boundary; -    httpHeaders->append("Content-Type", contentType.c_str()); - -    LLCore::BufferArray::ptr_t raw = LLCore::BufferArray::ptr_t(new LLCore::BufferArray()); //  -    LLCore::BufferArrayStream body(raw.get()); - -    // *NOTE: The order seems to matter. -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"status\"\r\n\r\n" -        << status << "\r\n"; - -    body << "--" << boundary << "\r\n" -        << "Content-Disposition: form-data; name=\"image\"; filename=\"Untitled." << imageFormat << "\"\r\n" -        << "Content-Type: image/" << imageFormat << "\r\n\r\n"; - -    // Insert the image data. -    // *FIX: Treating this as a string will probably screw it up ... -    U8* image_data = image->getData(); -    for (S32 i = 0; i < image->getDataSize(); ++i) -    { -        body << image_data[i]; -    } - -    body << "\r\n--" << boundary << "--\r\n"; - -    LLSD result = httpAdapter->postAndSuspend(httpRequest, getTwitterConnectURL("/share/photo", true), raw, httpOpts, httpHeaders); - -    if (testShareStatus(result)) -    { -        toast_user_for_twitter_success(); -        LL_DEBUGS("TwitterConnect") << "Post successful. " << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_POSTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLTwitterConnect::twitterDisconnectCoro() -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("TwitterConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->deleteAndSuspend(httpRequest, getTwitterConnectURL("/connection"), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status && (status != LLCore::HttpStatus(HTTP_NOT_FOUND))) -    { -        LL_WARNS("TwitterConnect") << "Disconnect failed!" << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_DISCONNECT_FAILED); - -        log_twitter_connect_error("Disconnect", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    else -    { -        LL_DEBUGS("TwitterConnect") << "Disconnect successful. " << LL_ENDL; -        clearInfo(); -        setConnectionState(LLTwitterConnect::TWITTER_NOT_CONNECTED); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLTwitterConnect::twitterConnectedCoro(bool autoConnect) -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("TwitterConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setFollowRedirects(false); -    setConnectionState(LLTwitterConnect::TWITTER_CONNECTION_IN_PROGRESS); - -    LLSD result = httpAdapter->getAndSuspend(httpRequest, getTwitterConnectURL("/connection", true), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (!status) -    { -        if (status == LLCore::HttpStatus(HTTP_NOT_FOUND)) -        { -            LL_DEBUGS("TwitterConnect") << "Not connected. " << LL_ENDL; -            if (autoConnect) -            { -                connectToTwitter(); -            } -            else -            { -                setConnectionState(LLTwitterConnect::TWITTER_NOT_CONNECTED); -            } -        } -        else -        { -            LL_WARNS("TwitterConnect") << "Failed to test connection:" << status.toTerseString() << LL_ENDL; - -            setConnectionState(LLTwitterConnect::TWITTER_CONNECTION_FAILED); -            log_twitter_connect_error("Connected", status.getStatus(), status.toString(), -                result.get("error_code"), result.get("error_description")); -        } -    } -    else -    { -        LL_DEBUGS("TwitterConnect") << "Connect successful. " << LL_ENDL; -        setConnectionState(LLTwitterConnect::TWITTER_CONNECTED); -    } - -} - -/////////////////////////////////////////////////////////////////////////////// -// -void LLTwitterConnect::twitterInfoCoro() -{ -    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); -    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t -        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("TwitterConnect", httpPolicy)); -    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); -    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); - -    httpOpts->setWantHeaders(true); -    httpOpts->setFollowRedirects(false); - -    LLSD result = httpAdapter->getAndSuspend(httpRequest, getTwitterConnectURL("/info", true), httpOpts); - -    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); - -    if (status == LLCore::HttpStatus(HTTP_FOUND)) -    { -        std::string location = httpResults[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS][HTTP_IN_HEADER_LOCATION]; -        if (location.empty()) -        { -            LL_WARNS("TwitterConnect") << "Missing Location header " << LL_ENDL; -        } -        else -        { -            openTwitterWeb(location); -        } -    } -    else if (!status) -    { -        LL_WARNS("TwitterConnect") << "Twitter Info failed: " << status.toString() << LL_ENDL; -        log_twitter_connect_error("Info", status.getStatus(), status.toString(), -            result.get("error_code"), result.get("error_description")); -    } -    else -    { -        LL_INFOS("TwitterConnect") << "Twitter: Info received" << LL_ENDL; -        result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS); -        storeInfo(result); -    } -} - -/////////////////////////////////////////////////////////////////////////////// -// -LLTwitterConnect::LLTwitterConnect() -:	mConnectionState(TWITTER_NOT_CONNECTED), -	mConnected(false), -	mInfo(), -	mRefreshInfo(false), -	mReadFromMaster(false) -{ -} - -void LLTwitterConnect::openTwitterWeb(std::string url) -{ -	LLFloaterWebContent::Params p; -    p.url(url); -    p.show_chrome(true); -    p.allow_back_forward_navigation(false); -    p.clean_browser(true); -	LLFloater *floater = LLFloaterReg::showInstance("twitter_web", p); -	//the internal web browser has a bug that prevents it from gaining focus unless a mouse event occurs first (it seems). -	//So when showing the internal web browser, set focus to it's containing floater "twitter_web". When a mouse event  -	//occurs on the "webbrowser" panel part of the floater, a mouse cursor will properly show and the "webbrowser" will gain focus. -	//twitter_web floater contains the "webbrowser" panel.    JIRA: ACME-744 -	gFocusMgr.setKeyboardFocus( floater ); - -	//LLUrlAction::openURLExternal(url); -} - -std::string LLTwitterConnect::getTwitterConnectURL(const std::string& route, bool include_read_from_master) -{ -    std::string url(""); -    LLViewerRegion *regionp = gAgent.getRegion(); -    if (regionp) -    { -		//url = "http://pdp15.lindenlab.com/twitter/agent/" + gAgentID.asString(); // TEMPORARY FOR TESTING - CHO -        url = regionp->getCapability("TwitterConnect"); -        url += route; -     -        if (include_read_from_master && mReadFromMaster) -        { -            url += "?read_from_master=true"; -        } -    } -	return url; -} - -void LLTwitterConnect::connectToTwitter(const std::string& request_token, const std::string& oauth_verifier) -{ -    setConnectionState(LLTwitterConnect::TWITTER_CONNECTION_IN_PROGRESS); - -    LLCoros::instance().launch("LLTwitterConnect::twitterConnectCoro", -        boost::bind(&LLTwitterConnect::twitterConnectCoro, this, request_token, oauth_verifier)); -} - -void LLTwitterConnect::disconnectFromTwitter() -{ -    setConnectionState(LLTwitterConnect::TWITTER_DISCONNECTING); - -    LLCoros::instance().launch("LLTwitterConnect::twitterDisconnectCoro", -        boost::bind(&LLTwitterConnect::twitterDisconnectCoro, this)); -} - -void LLTwitterConnect::checkConnectionToTwitter(bool auto_connect) -{ -    LLCoros::instance().launch("LLTwitterConnect::twitterConnectedCoro", -        boost::bind(&LLTwitterConnect::twitterConnectedCoro, this, auto_connect)); -} - -void LLTwitterConnect::loadTwitterInfo() -{ -	if(mRefreshInfo) -	{ -        LLCoros::instance().launch("LLTwitterConnect::twitterInfoCoro", -            boost::bind(&LLTwitterConnect::twitterInfoCoro, this)); -	} -} - -void LLTwitterConnect::uploadPhoto(const std::string& image_url, const std::string& status) -{ -	LLSD body; -	body["image"] = image_url; -	body["status"] = status; - -    setConnectionState(LLTwitterConnect::TWITTER_POSTING); - -    LLCoros::instance().launch("LLTwitterConnect::twitterShareCoro", -        boost::bind(&LLTwitterConnect::twitterShareCoro, this, "/share/photo", body)); -} - -void LLTwitterConnect::uploadPhoto(LLPointer<LLImageFormatted> image, const std::string& status) -{ -    setConnectionState(LLTwitterConnect::TWITTER_POSTING); - -    LLCoros::instance().launch("LLTwitterConnect::twitterShareImageCoro", -        boost::bind(&LLTwitterConnect::twitterShareImageCoro, this, image, status)); -} - -void LLTwitterConnect::updateStatus(const std::string& status) -{ -	LLSD body; -	body["status"] = status; -	 -    setConnectionState(LLTwitterConnect::TWITTER_POSTING); - -    LLCoros::instance().launch("LLTwitterConnect::twitterShareCoro", -        boost::bind(&LLTwitterConnect::twitterShareCoro, this, "/share/status", body)); -} - -void LLTwitterConnect::storeInfo(const LLSD& info) -{ -	mInfo = info; -	mRefreshInfo = false; - -	sInfoWatcher->post(info); -} - -const LLSD& LLTwitterConnect::getInfo() const -{ -	return mInfo; -} - -void LLTwitterConnect::clearInfo() -{ -	mInfo = LLSD(); -} - -void LLTwitterConnect::setDataDirty() -{ -	mRefreshInfo = true; -} - -void LLTwitterConnect::setConnectionState(LLTwitterConnect::EConnectionState connection_state) -{ -	if(connection_state == TWITTER_CONNECTED) -	{ -		mReadFromMaster = true; -		setConnected(true); -		setDataDirty(); -	} -	else if(connection_state == TWITTER_NOT_CONNECTED) -	{ -		setConnected(false); -	} -	else if(connection_state == TWITTER_POSTED) -	{ -		mReadFromMaster = false; -	} - -	if (mConnectionState != connection_state) -	{ -		// set the connection state before notifying watchers -		mConnectionState = connection_state; - -		LLSD state_info; -		state_info["enum"] = connection_state; -		sStateWatcher->post(state_info); -	} -} - -void LLTwitterConnect::setConnected(bool connected) -{ -	mConnected = connected; -} diff --git a/indra/newview/lltwitterconnect.h b/indra/newview/lltwitterconnect.h deleted file mode 100644 index e77048cc35..0000000000 --- a/indra/newview/lltwitterconnect.h +++ /dev/null @@ -1,107 +0,0 @@ -/**  - * @file lltwitterconnect.h - * @author Merov, Cho - * @brief Connection to Twitter Service - * - * $LicenseInfo:firstyear=2013&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2013, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLTWITTERCONNECT_H -#define LL_LLTWITTERCONNECT_H - -#include "llsingleton.h" -#include "llimage.h" -#include "llcoros.h" -#include "lleventcoro.h" - -class LLEventPump; - -/** - * @class LLTwitterConnect - * - * Manages authentication to, and interaction with, a web service allowing the - * the viewer to post status updates and upload photos to Twitter. - */ -class LLTwitterConnect : public LLSingleton<LLTwitterConnect> -{ -	LLSINGLETON(LLTwitterConnect); -	LOG_CLASS(LLTwitterConnect); -public: -    enum EConnectionState -	{ -		TWITTER_NOT_CONNECTED = 0, -		TWITTER_CONNECTION_IN_PROGRESS = 1, -		TWITTER_CONNECTED = 2, -		TWITTER_CONNECTION_FAILED = 3, -		TWITTER_POSTING = 4, -		TWITTER_POSTED = 5, -		TWITTER_POST_FAILED = 6, -		TWITTER_DISCONNECTING = 7, -		TWITTER_DISCONNECT_FAILED = 8 -	}; -	 -	void connectToTwitter(const std::string& request_token = "", const std::string& oauth_verifier = "");	// Initiate the complete Twitter connection. Please use checkConnectionToTwitter() in normal use. -	void disconnectFromTwitter();																			// Disconnect from the Twitter service. -    void checkConnectionToTwitter(bool auto_connect = false);												// Check if an access token is available on the Twitter service. If not, call connectToTwitter(). -     -	void loadTwitterInfo(); -	void uploadPhoto(const std::string& image_url, const std::string& status); -	void uploadPhoto(LLPointer<LLImageFormatted> image, const std::string& status); -	void updateStatus(const std::string& status); -	 -	void storeInfo(const LLSD& info); -	const LLSD& getInfo() const; -	void clearInfo(); -	void setDataDirty(); -     -    void setConnectionState(EConnectionState connection_state); -	void setConnected(bool connected); -	bool isConnected() { return mConnected; } -	bool isTransactionOngoing() { return ((mConnectionState == TWITTER_CONNECTION_IN_PROGRESS) || (mConnectionState == TWITTER_POSTING) || (mConnectionState == TWITTER_DISCONNECTING)); } -    EConnectionState getConnectionState() { return mConnectionState; } -     -    void openTwitterWeb(std::string url); - -private: - - 	std::string getTwitterConnectURL(const std::string& route = "", bool include_read_from_master = false); - -    EConnectionState mConnectionState; -	BOOL mConnected; -	LLSD mInfo; -	bool mRefreshInfo; -	bool mReadFromMaster; -	 -	static boost::scoped_ptr<LLEventPump> sStateWatcher; -	static boost::scoped_ptr<LLEventPump> sInfoWatcher; -	static boost::scoped_ptr<LLEventPump> sContentWatcher; - -    bool testShareStatus(LLSD &result); -    void twitterConnectCoro(std::string requestToken, std::string oauthVerifier); -    void twitterDisconnectCoro(); -    void twitterConnectedCoro(bool autoConnect); -    void twitterInfoCoro(); -    void twitterShareCoro(std::string route, LLSD share); -    void twitterShareImageCoro(LLPointer<LLImageFormatted> image, std::string status); -}; - -#endif // LL_LLTWITTERCONNECT_H diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index f475ab7d66..7e0f449d59 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -67,7 +67,6 @@  #include "llfloaterexperiences.h"  #include "llfloaterexperiencepicker.h"  #include "llfloaterevent.h" -#include "llfloaterflickr.h"  #include "llfloaterfonttest.h"  #include "llfloatergesture.h"  #include "llfloatergodtools.h" @@ -132,7 +131,6 @@  #include "llfloatertos.h"  #include "llfloatertoybox.h"  #include "llfloatertranslationsettings.h" -#include "llfloatertwitter.h"  #include "llfloateruipreview.h"  #include "llfloatervoiceeffect.h"  #include "llfloaterwebcontent.h" @@ -352,11 +350,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);  	LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); -	LLFloaterReg::add("flickr_web", "floater_fbc_web.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); -	LLFloaterReg::add("twitter_web", "floater_fbc_web.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); -	 -	LLFloaterReg::add("flickr", "floater_flickr.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFlickr>); -	LLFloaterReg::add("twitter", "floater_twitter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTwitter>);  	LLFloaterReg::add("big_preview", "floater_big_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBigPreview>);  	LLFloaterUIPreviewUtil::registerFloater(); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 5b227c641b..75e707aaa3 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -2895,8 +2895,6 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)  	capabilityNames.append("EstateAccess");  	capabilityNames.append("EstateChangeInfo");  	capabilityNames.append("EventQueueGet"); -	capabilityNames.append("FlickrConnect"); -	capabilityNames.append("TwitterConnect");  	capabilityNames.append("FetchLib2");  	capabilityNames.append("FetchLibDescendents2"); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 5aba0546f3..7482ec994c 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -133,7 +133,6 @@ with the same filename but different name    <texture name="Command_Chat_Icon"         file_name="toolbar_icons/chat.png"         preload="true" />    <texture name="Command_Compass_Icon"      file_name="toolbar_icons/land.png"         preload="true" />    <texture name="Command_Destinations_Icon" file_name="toolbar_icons/destinations.png" preload="true" /> -  <texture name="Command_Flickr_Icon"       file_name="toolbar_icons/flickr.png"       preload="true" />    <texture name="Command_Gestures_Icon"     file_name="toolbar_icons/gestures.png"     preload="true" />    <texture name="Command_Grid_Status_Icon"  file_name="toolbar_icons/grid_status.png"  preload="true" />    <texture name="Command_HowTo_Icon"        file_name="toolbar_icons/howto.png"        preload="true" /> @@ -154,7 +153,6 @@ with the same filename but different name    <texture name="Command_Search_Icon"       file_name="toolbar_icons/search.png"       preload="true" />    <texture name="Command_Snapshot_Icon"     file_name="toolbar_icons/snapshot.png"     preload="true" />    <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" /> -  <texture name="Command_Twitter_Icon"      file_name="toolbar_icons/twitter.png"      preload="true" />    <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />    <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" />    <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" /> diff --git a/indra/newview/skins/default/xui/en/floater_flickr.xml b/indra/newview/skins/default/xui/en/floater_flickr.xml deleted file mode 100644 index 3b9c4894c1..0000000000 --- a/indra/newview/skins/default/xui/en/floater_flickr.xml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> -<floater -  positioning="cascading" -  can_close="true" -  can_resize="false" -  help_topic="floater_flickr" -  layout="topleft" -  name="floater_flickr" -  save_rect="true" -  single_instance="true" -  reuse_instance="true" -  title="SHARE TO FLICKR" -  height="590" -  width="272"> -  <panel -   height="590" -   width="272" -   visible="true" -   name="background" -   follows="all" -   top="0" -   left="0"> -   <tab_container -     name="tabs" -     tab_group="1" -     tab_min_width="70" -     tab_height="21" -     tab_position="top" -     top="7" -     height="555" -     follows="all" -     halign="center"> -     <panel -       filename="panel_flickr_photo.xml" -       class="llflickrphotopanel" -       follows="all" -       label="PHOTO" -       name="panel_flickr_photo"/> -     <panel -       filename="panel_flickr_account.xml" -       class="llflickraccountpanel" -       follows="all" -       label="ACCOUNT" -       name="panel_flickr_account"/>      -    </tab_container> -    <panel -     name="connection_status_panel" -     follows="left|bottom|right" -     height="24"> -     <text -      name="connection_error_text" -      type="string" -      follows="left|bottom|right" -      bottom="-5" -      left="10" -      width="250" -      height="20" -      wrap="true" -      halign="left" -      valign="center" -      text_color="DrYellow" -      font="SansSerif"> -      Error -     </text> -     <loading_indicator -      follows="left|bottom|right" -      height="24" -      width="24" -      name="connection_loading_indicator" -      top_delta="-2" -      left="10" -      visible="true"/> -     <text -      name="connection_loading_text" -      type="string" -      follows="left|bottom|right" -      top_delta="2" -      left_pad="5" -      width="250" -      height="20" -      wrap="true" -      halign="left" -      valign="center" -      text_color="EmphasisColor" -      font="SansSerif"> -      Loading... -    </text> -  </panel> - </panel> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_twitter.xml b/indra/newview/skins/default/xui/en/floater_twitter.xml deleted file mode 100644 index 5e8dfb8a52..0000000000 --- a/indra/newview/skins/default/xui/en/floater_twitter.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> -<floater -  positioning="cascading" -  can_close="true" -  can_resize="false" -  help_topic="floater_twitter" -  layout="topleft" -  name="floater_twitter" -  save_rect="true" -  single_instance="true" -  reuse_instance="true" -  title="TWITTER" -  height="462" -  width="272"> -   <tab_container -     name="tabs" -     tab_group="1" -     tab_min_width="70" -     tab_height="21" -     tab_position="top" -     top="7" -     height="457" -     halign="center"> -     <panel -       filename="panel_twitter_photo.xml" -       class="lltwitterphotopanel" -       follows="all" -       label="COMPOSE" -       name="panel_twitter_photo"/> -     <panel -       filename="panel_twitter_account.xml" -       class="lltwitteraccountpanel" -       follows="all" -       label="ACCOUNT" -       name="panel_twitter_account"/>      -    </tab_container> -     <text -      name="connection_error_text" -      type="string" -      follows="left|bottom|right" -      bottom="-5" -      left="10" -      width="252" -      height="20" -      wrap="true" -      halign="left" -      valign="center" -      text_color="DrYellow" -      font="SansSerif"> -      Error -     </text> -     <loading_indicator -      follows="left|bottom|right" -      height="24" -      width="24" -      name="connection_loading_indicator" -      top_delta="-2" -      left="10" -      visible="true"/> -     <text -      name="connection_loading_text" -      type="string" -      follows="left|bottom|right" -      top_delta="2" -      left_pad="5" -      width="223" -      height="20" -      wrap="true" -      halign="left" -      valign="center" -      text_color="EmphasisColor" -      font="SansSerif"> -      Loading... -    </text> -</floater> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ab42b76b3b..3bab3aea55 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -308,21 +308,6 @@               parameter="conversation" />          </menu_item_check>          <menu_item_separator/> -      <menu_item_call -        label="Twitter..." -        name="Twitter"> -        <menu_item_call.on_click -          function="Floater.Toggle" -          parameter="twitter"/> -      </menu_item_call> -      <menu_item_call -        label="Flickr..." -        name="Flickr"> -        <menu_item_call.on_click -          function="Floater.Toggle" -          parameter="flickr"/> -      </menu_item_call> -        <menu_item_separator/>          <menu           label="Voice morphing"           name="VoiceMorphing" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 30e8f7cedc..af9602ea11 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6765,20 +6765,6 @@ Please select at least one type of content to search (General, Moderate, or Adul    <notification     icon="notify.tga" -   name="FlickrConnect" -   type="notifytip"> -    [MESSAGE] -  </notification> - -  <notification -   icon="notify.tga" -   name="TwitterConnect" -   type="notifytip"> -    [MESSAGE] -  </notification> - -  <notification -   icon="notify.tga"     name="PaymentReceived"     log_to_im="true"        persist="true" diff --git a/indra/newview/skins/default/xui/en/panel_flickr_account.xml b/indra/newview/skins/default/xui/en/panel_flickr_account.xml deleted file mode 100644 index 5c2f335780..0000000000 --- a/indra/newview/skins/default/xui/en/panel_flickr_account.xml +++ /dev/null @@ -1,79 +0,0 @@ -<panel -	 height="540" -	 width="272" -	 layout="topleft" -   name="panel_flickr_account"> -  <string -      name="flickr_connected" -      value="You are connected to Flickr as:" /> -  <string -      name="flickr_disconnected" -      value="Not connected to Flickr" /> -  <text -   layout="topleft" -   length="1" -   follows="top|left" -   font="SansSerif" -   height="16" -   left="10" -   name="account_caption_label" -   top="5" -   type="string"> -    Not connected to Flickr. -  </text> -  <text -   layout="topleft" -   top_pad="2" -   length="1" -   follows="top|left" -   font="SansSerif" -   height="16" -   left="10" -   name="account_name_label" -   parse_urls="true" -   type="string"/> -  <panel -    layout="topleft" -    name="panel_buttons" -    height="345" -    left="0"> -    <button -     layout="topleft" -     follows="left|top|right" -     top_pad="9" -     visible="true" -	 left="10" -	 right="-10" -     height="23" -     label="Connect..." -     name="connect_btn" -     width="210"> -      <commit_callback function="SocialSharing.Connect"/> -    </button> - -    <button -     layout="topleft" -     follows="left|top|right" -     top_delta="0" -	 left="10" -	 right="-10" -     height="23" -     label="Disconnect" -     name="disconnect_btn" -     width="210" -     visible="false"> -      <commit_callback function="SocialSharing.Disconnect"/> -    </button> -    <text -      layout="topleft" -      length="1" -      follows="top|left" -      height="16" -      left="10" -      name="account_learn_more_label" -      top_pad="5" -      type="string"> -      [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Flickr/ta-p/2435609 Learn about posting to Flickr] -    </text> -  </panel> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_flickr_photo.xml b/indra/newview/skins/default/xui/en/panel_flickr_photo.xml deleted file mode 100644 index 7fb2291423..0000000000 --- a/indra/newview/skins/default/xui/en/panel_flickr_photo.xml +++ /dev/null @@ -1,259 +0,0 @@ -    <panel -      height="540" -      width="272" -	  follows="all" -      layout="topleft" -      name="panel_flickr_photo"> -            <combo_box -             control_name="FlickrPhotoResolution" -             follows="left|top" -			 layout="topleft" -             top="7" -             left="10" -             name="resolution_combobox" -             tool_tip="Image resolution" -             height="21" -             width="124"> -              <combo_box.item -               label="Current Window" -               name="CurrentWindow" -               value="[i0,i0]" /> -              <combo_box.item -               label="640x480" -               name="640x480" -               value="[i640,i480]" /> -              <combo_box.item -               label="800x600" -               name="800x600" -               value="[i800,i600]" /> -              <combo_box.item -               label="1024x768" -               name="1024x768" -               value="[i1024,i768]" /> -            </combo_box> -            <combo_box -               control_name="FlickrPhotoFilters" -               follows="left|top" -			   layout="topleft" -               name="filters_combobox" -               tool_tip="Image filters" -               top_delta="0" -               left_pad="4" -               height="21" -               width="124"> -                <combo_box.item -                 label="No Filter" -                 name="NoFilter" -                 value="NoFilter" /> -            </combo_box> -            <panel -                height="150" -                width="250" -                visible="true" -                name="thumbnail_placeholder" -                top_pad="5" -                follows="left|top|right" -				layout="topleft" -				right="-10" -                left="10"> -            </panel> -			<text -                follows="left|top" -				layout="topleft" -                font="SansSerif" -                text_color="EmphasisColor" -                height="14" -                top_pad="2" -                left="10" -                length="1" -                halign="center" -                name="working_lbl" -                translate="false" -                type="string" -                visible="true" -                width="251"> -                Refreshing... -            </text> -			<view_border  -			 bevel_style="in" -			 follows="left|top" -			 layout="topleft" -			 height="1" -			 left="10" -			 name="refresh_border" -			 width="250" -			 top_pad="0"/> -            <button -             follows="left|top" -			 layout="topleft" -             height="23" -             label="Refresh" -             left="10" -             top_pad="5" -             name="new_snapshot_btn" -             tool_tip="Click to refresh" -             visible="true" -             width="100" > -             <button.commit_callback -               function="SocialSharing.RefreshPhoto" /> -            </button> -            <button -                follows="right|top" -				layout="topleft" -                height="23" -                label="Preview" -                right="-10" -                top_delta="0" -                name="big_preview_btn" -                tool_tip="Click to toggle preview" -                is_toggle="true" -                visible="true" -                width="100" > -                <button.commit_callback -                function="SocialSharing.BigPreview" /> -            </button> -            <text -             length="1" -             follows="top|left|right" -			 layout="topleft" -             font="SansSerif" -             height="16" -             left="10" -             name="title_label" -             top_pad="10" -             type="string"> -              Title: -            </text> -            <line_editor -             follows="left|top" -			 layout="topleft" -             height="20" -             width="250" -             left="10" -             length="1" -             max_length="256" -             name="photo_title" -             type="string"> -            </line_editor> -            <text -             length="1" -             follows="top|left|right" -			 layout="topleft" -             font="SansSerif" -             height="16" -             left="10" -			 right="-10" -             name="description_label" -             top_pad="10" -			 width="25" -             type="string"> -              Description: -            </text> -            <text_editor -             follows="left|top" -			 layout="topleft" -             height="50" -             width="249" -             left="10" -             length="1" -             max_length="700" -             name="photo_description" -             spellcheck="true" -             type="string" -             word_wrap="true"> -            </text_editor> -            <check_box -             follows="left|top" -			 layout="topleft" -             initial_value="true" -             label="Include SL location at end of description" -             name="add_location_cb" -              left="9" -              height="16" -             top_pad="8"/> -            <text -             length="1" -             follows="top|left" -			 layout="topleft" -             font="SansSerif" -             height="16" -             left="10" -             name="tags_label" -             top_pad="6" -             type="string"> -              Tags: -            </text> -            <text -              length="1" -              follows="top|left" -			  layout="topleft" -              font="SansSerifSmall" -              text_color="White_50" -              height="30" -              name="tags_help_label" -              left="51" -              top_pad="-16" -              type="string"> -Separate tags with spaces -Use "" for multi-word tags -            </text> -            <text_editor -             follows="left|top" -			 layout="topleft" -             height="50" -             width="249" -             left="10" -             length="1" -             max_length="700" -             name="photo_tags" -             type="string" -             word_wrap="true"> -            </text_editor> -            <combo_box -             control_name="FlickrPhotoRating" -             follows="left|top" -			 layout="topleft" -             top_pad="7" -             left="10" -             name="rating_combobox" -             tool_tip="Flickr content rating" -             height="21" -             width="250"> -              <combo_box.item -               label="Safe Flickr rating" -               name="SafeRating" -               value="1" /> -              <combo_box.item -               label="Moderate Flickr rating" -               name="ModerateRating" -               value="2" /> -              <combo_box.item -               label="Restricted Flickr rating" -               name="RestrictedRating" -               value="3" /> -            </combo_box> -          <button -           follows="left|top" -		   layout="topleft" -           top_pad="7" -           left="10" -           height="23" -           label="Share" -           name="post_photo_btn" -           width="100"> -            <button.commit_callback -             function="SocialSharing.SendPhoto" /> -          </button> -          <button -               follows="right|top" -			   layout="topleft" -               height="23" -               label="Cancel" -               name="cancel_photo_btn" -               right="-10" -               top_delta="0" -               width="100"> -            <button.commit_callback -             function="SocialSharing.Cancel" /> -          </button> -    </panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index 981b9ab881..2fe4cf8183 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -61,40 +61,6 @@     font="SansSerif"     halign="left"     height="22" -   image_overlay="Command_Twitter_Icon" -   image_overlay_alignment="left" -   image_top_pad="0" -   imgoverlay_label_space="10" -   label="Share to Twitter" -   layout="topleft" -   left_delta="0" -   name="send_to_twitter_btn" -   top_pad="5"> -    <button.commit_callback -     function="Snapshot.SendToTwitter"/> -  </button> -  <button -   follows="left|top" -   font="SansSerif" -   halign="left" -   height="22" -   image_overlay="Command_Flickr_Icon" -   image_overlay_alignment="left" -   image_top_pad="0" -   imgoverlay_label_space="10" -   label="Share to Flickr" -   layout="topleft" -   left_delta="0" -   name="send_to_flickr_btn" -   top_pad="5"> -    <button.commit_callback -     function="Snapshot.SendToFlickr"/> -  </button> -  <button -   follows="left|top" -   font="SansSerif" -   halign="left" -   height="22"     image_overlay="Snapshot_Email"     image_overlay_alignment="left"     image_top_pad="0" diff --git a/indra/newview/skins/default/xui/en/panel_twitter_account.xml b/indra/newview/skins/default/xui/en/panel_twitter_account.xml deleted file mode 100644 index b9049a0bba..0000000000 --- a/indra/newview/skins/default/xui/en/panel_twitter_account.xml +++ /dev/null @@ -1,81 +0,0 @@ -<panel -	 height="400" -	 width="272" -	 layout="topleft" -   name="panel_twitter_account"> -  <string -      name="twitter_connected" -      value="You are connected to Twitter as:" /> -  <string -      name="twitter_disconnected" -      value="Not connected to Twitter" /> -  <text -   layout="topleft" -   length="1" -   follows="top|left" -   font="SansSerif" -   height="16" -   left="10" -   name="account_caption_label" -   top="5" -   type="string"> -    Not connected to Twitter. -  </text> -  <text -   layout="topleft" -   top_pad="2" -   length="1" -   follows="top|left" -   font="SansSerif" -   height="16" -   left="10" -   name="account_name_label" -   parse_urls="true" -   type="string"/> -  <panel -    layout="topleft" -	follows="top|left" -    name="panel_buttons" -    height="345" -	top_pad="3" -    left="0"> -    <button -     layout="topleft" -     follows="left|top|right" -     top_pad="9" -	 left="10" -	 right="-10" -     visible="true" -     height="23" -     label="Connect..." -     name="connect_btn" -     width="210"> -      <commit_callback function="SocialSharing.Connect"/> -    </button> - -    <button -     layout="topleft" -     follows="left|top|right" -     top_delta="0" -	 left="10" -	 right="-10" -     height="23" -     label="Disconnect" -     name="disconnect_btn" -     width="210" -     visible="false"> -      <commit_callback function="SocialSharing.Disconnect"/> -    </button> -    <text -      layout="topleft" -      length="1" -      follows="top|left" -      height="16" -      left="10" -      name="account_learn_more_label" -      top_pad="5" -      type="string"> -      [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Twitter/ta-p/2435453 Learn about posting to Twitter] -    </text> -  </panel> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml b/indra/newview/skins/default/xui/en/panel_twitter_photo.xml deleted file mode 100644 index 8774d09a03..0000000000 --- a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml +++ /dev/null @@ -1,196 +0,0 @@ -    <panel -      height="420" -      width="304" -      layout="topleft" -      name="panel_twitter_photo"> -          <text -           length="1" -		   layout="topleft" -           follows="top|left|right" -           font="SansSerif" -           height="16" -           left="10" -           name="status_label" -           top="5" -           type="string"> -            What's happening? -          </text> -          <text -           length="1" -           follows="top|left" -		   layout="topleft" -           font="SansSerif" -           text_color="EmphasisColor" -           halign="right" -           height="16" -           width="30" -           left="227" -           name="status_counter_label" -           top="5" -           type="string"> -            140 -          </text> -          <text_editor -           follows="left|top" -		   layout="topleft" -           height="87" -           width="250" -           left="10" -           length="1" -           max_length="140" -           name="photo_status" -           spellcheck="true" -           type="string" -           word_wrap="true"> -          </text_editor> -          <check_box -           follows="left|top" -		   layout="topleft" -           initial_value="true" -           label="Include SL location" -           name="add_location_cb" -            left="10" -            height="16" -           top_pad="8"/> -          <check_box -           follows="left|top" -		   layout="topleft" -           initial_value="true" -           label="Include a photo" -           name="add_photo_cb" -            left="10" -            height="16" -           top_pad="1"/> -            <combo_box -             control_name="TwitterPhotoResolution" -             follows="left|top" -			 layout="topleft" -             top_pad="5" -             left="10" -             name="resolution_combobox" -             tool_tip="Image resolution" -             height="21" -             width="124"> -              <combo_box.item -               label="Current Window" -               name="CurrentWindow" -               value="[i0,i0]" /> -              <combo_box.item -               label="640x480" -               name="640x480" -               value="[i640,i480]" /> -              <combo_box.item -               label="800x600" -               name="800x600" -               value="[i800,i600]" /> -              <combo_box.item -               label="1024x768" -               name="1024x768" -               value="[i1024,i768]" /> -            </combo_box> -              <combo_box -                  control_name="TwitterPhotoFilters" -                  follows="right|top" -				  layout="topleft" -                  name="filters_combobox" -                  tool_tip="Image filters" -                  top_delta="0" -                  right="-10" -                  height="21" -                  width="124"> -                  <combo_box.item -                  label="No Filter" -                  name="NoFilter" -                  value="NoFilter" /> -              </combo_box> -            <panel -				layout="topleft" -                height="150" -                width="250" -                visible="true" -                name="thumbnail_placeholder" -                top_pad="5" -				right="-10" -                follows="left|top|right" -                left="10"> -            </panel> -			<text -                follows="left|top" -				layout="topleft" -                font="SansSerif" -                text_color="EmphasisColor" -                height="14" -                top_pad="2" -                left="10" -                length="1" -                halign="center" -                name="working_lbl" -                translate="false" -                type="string" -                visible="true" -                width="251"> -                Refreshing... -            </text> -			<view_border  -			 bevel_style="in" -			 follows="left|top" -			 layout="topleft" -			 height="1" -			 left="10" -			 name="refresh_border" -			 width="250" -			 top_pad="0"/> -            <button -             follows="left|top" -			 layout="topleft" -             height="23" -             label="Refresh" -             left="10" -             top_pad="5" -             name="new_snapshot_btn" -             tool_tip="Click to refresh" -             visible="true" -             width="100" > -             <button.commit_callback -               function="SocialSharing.RefreshPhoto" /> -            </button> -              <button -                  follows="right|top" -				  layout="topleft" -                  height="23" -                  label="Preview" -                  right="-10" -                  top_delta="0" -                  name="big_preview_btn" -                  tool_tip="Click to toggle preview" -                  is_toggle="true" -                  visible="true" -                  width="100" > -                  <button.commit_callback -                  function="SocialSharing.BigPreview" /> -              </button> -          <button -           follows="left|top" -		   layout="topleft" -           top_pad="3" -           left="10" -           height="23" -           label="Tweet" -           name="post_photo_btn" -           width="100"> -            <button.commit_callback -             function="SocialSharing.SendPhoto" /> -          </button> -          <button -               follows="right|top" -			   layout="topleft" -               height="23" -               label="Cancel" -               name="cancel_photo_btn" -			   right="-10" -               top_delta="0" -               width="100"> -            <button.commit_callback -             function="SocialSharing.Cancel" /> -          </button>           -    </panel> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 292c2a6293..454616340a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -201,21 +201,7 @@ Please try logging in again in a minute.</string>  	<string name="YouHaveBeenDisconnected">You have been disconnected from the region you were in.</string>  	<string name="SentToInvalidRegion">You were sent to an invalid region.</string>  	<string name="TestingDisconnect">Testing viewer disconnect</string> - -	<!-- SLShare: Flickr and Twitter --> -  <string name="SocialFlickrConnecting">Connecting to Flickr...</string> -  <string name="SocialFlickrPosting">Posting...</string> -  <string name="SocialFlickrDisconnecting">Disconnecting from Flickr...</string> -  <string name="SocialFlickrErrorConnecting">Problem connecting to Flickr</string> -  <string name="SocialFlickrErrorPosting">Problem posting to Flickr</string> -  <string name="SocialFlickrErrorDisconnecting">Problem disconnecting from Flickr</string> -  <string name="SocialTwitterConnecting">Connecting to Twitter...</string> -  <string name="SocialTwitterPosting">Posting...</string> -  <string name="SocialTwitterDisconnecting">Disconnecting from Twitter...</string> -  <string name="SocialTwitterErrorConnecting">Problem connecting to Twitter</string> -  <string name="SocialTwitterErrorPosting">Problem posting to Twitter</string> -  <string name="SocialTwitterErrorDisconnecting">Problem disconnecting from Twitter</string> -     +    	<!-- SLShare: User Friendly Filter Names Translation -->      <string name="BlackAndWhite">Black & White</string>      <string name="Colors1970">1970's Colors</string> @@ -3656,13 +3642,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].      Drag items from inventory here    </string> -  <string name="flickr_post_success"> -    You posted to Flickr. -  </string> -  <string name="twitter_post_success"> -    You posted to Twitter. -  </string> -    <string name="no_session_message">      (IM Session Doesn't Exist)    </string> @@ -4088,7 +4067,6 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Conversations_Label">Conversations</string>    <string name="Command_Compass_Label">Compass</string>    <string name="Command_Destinations_Label">Destinations</string> -  <string name="Command_Flickr_Label">Flickr</string>    <string name="Command_Gestures_Label">Gestures</string>    <string name="Command_Grid_Status_Label">Grid status</string>    <string name="Command_HowTo_Label">How to</string> @@ -4108,7 +4086,6 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Search_Label">Search</string>    <string name="Command_Snapshot_Label">Snapshot</string>    <string name="Command_Speak_Label">Speak</string> -  <string name="Command_Twitter_Label">Twitter</string>    <string name="Command_View_Label">Camera controls</string>    <string name="Command_Voice_Label">Voice settings</string> @@ -4120,7 +4097,6 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Conversations_Tooltip">Converse with everyone</string>    <string name="Command_Compass_Tooltip">Compass</string>    <string name="Command_Destinations_Tooltip">Destinations of interest</string> -  <string name="Command_Flickr_Tooltip">Upload to Flickr</string>    <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>    <string name="Command_Grid_Status_Tooltip">Show current Grid status</string>    <string name="Command_HowTo_Tooltip">How to do common tasks</string> @@ -4140,7 +4116,6 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Search_Tooltip">Find places, events, people</string>    <string name="Command_Snapshot_Tooltip">Take a picture</string>    <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string> -  <string name="Command_Twitter_Tooltip">Twitter</string>    <string name="Command_View_Tooltip">Changing camera angle</string>    <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string> | 
