diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/Twitter/src/connection.cpp | 47 | ||||
| -rw-r--r-- | protocols/Twitter/src/proto.h | 2 | ||||
| -rw-r--r-- | protocols/Twitter/src/version.h | 2 | 
3 files changed, 46 insertions, 5 deletions
| diff --git a/protocols/Twitter/src/connection.cpp b/protocols/Twitter/src/connection.cpp index a9ed828887..7786e1d0a2 100644 --- a/protocols/Twitter/src/connection.cpp +++ b/protocols/Twitter/src/connection.cpp @@ -18,6 +18,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include "proto.h"
  //#include "tc2.h"
  #include "twitter.h"
 +#include <sstream>
  void CALLBACK TwitterProto::APC_callback(ULONG_PTR p)
  {
 @@ -516,7 +517,39 @@ void TwitterProto::UpdateFriends()  }
 -void TwitterProto::ShowContactPopup(MCONTACT hContact,const std::string &text)
 +
 +LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 +{
 +	switch (message)
 +	{
 +	case WM_COMMAND:
 +	{
 +		// Get the plugin data (we need the Popup service to do it)
 +		std::string *url = (std::string *)PUGetPluginData(hwnd);
 +		if (url != NULL) {
 +			//std::string url = profile_base_url("https://twitter.com/") + http::url_encode(dbv.pszVal);
 +			CallService(MS_UTILS_OPENURL, 1, reinterpret_cast<LPARAM>(url->c_str()));
 +		}
 +
 +		// After a click, destroy popup
 +		PUDeletePopup(hwnd);
 +	} break;
 +
 +	case UM_FREEPLUGINDATA:
 +	{
 +		// After close, free
 +		std::string *url = (std::string *)PUGetPluginData(hwnd);
 +		delete url;
 +	} return FALSE;
 +
 +	default:
 +		break;
 +	}
 +
 +	return DefWindowProc(hwnd, message, wParam, lParam);
 +};
 +
 +void TwitterProto::ShowContactPopup(MCONTACT hContact,const std::string &text,const std::string *url)
  {
  	if(!ServiceExists(MS_POPUP_ADDPOPUPT) || db_get_b(0,m_szModuleName,TWITTER_KEY_POPUP_SHOW,0) == 0)
  	{
 @@ -541,6 +574,11 @@ void TwitterProto::ShowContactPopup(MCONTACT hContact,const std::string &text)  		db_free(&dbv);
  	}
 +	if (url != NULL) {
 +		popup.PluginWindowProc = PopupWindowProc;
 +		popup.PluginData = (void *)url;
 +	}
 +
  	mbcs_to_tcs(CP_UTF8,text.c_str(),popup.lptzText,MAX_SECONDLINE);
  	PUAddPopupT(&popup);
  }
 @@ -582,8 +620,11 @@ void TwitterProto::UpdateStatuses(bool pre_read, bool popups, bool tweetToMsg)  			db_set_utf(hContact,"CList","StatusMsg",i->status.text.c_str());
 -			if(!pre_read && popups)
 -				ShowContactPopup(hContact,i->status.text);
 +			if (!pre_read && popups) {
 +				std::stringstream url;
 +				url << std::string("https://twitter.com/") << i->username << std::string("/status/") << i->status.id;
 +				ShowContactPopup(hContact, i->status.text, new std::string(url.str()));
 +			}
  		}
  		db_pod_set(0,m_szModuleName,TWITTER_KEY_SINCEID,since_id_);
 diff --git a/protocols/Twitter/src/proto.h b/protocols/Twitter/src/proto.h index 659e2b41d5..7c0207d78b 100644 --- a/protocols/Twitter/src/proto.h +++ b/protocols/Twitter/src/proto.h @@ -126,7 +126,7 @@ private:  	int ShowPinDialog();
  	void ShowPopup(const wchar_t *, int Error = 0);
  	void ShowPopup(const char *, int Error = 0);
 -	void ShowContactPopup(MCONTACT, const std::string &);
 +	void ShowContactPopup(MCONTACT, const std::string &, const std::string *);
  	bool IsMyContact(MCONTACT, bool include_chat = false);
  	MCONTACT UsernameToHContact(const char *);
 diff --git a/protocols/Twitter/src/version.h b/protocols/Twitter/src/version.h index 7fe85d41a9..28503b3ce5 100644 --- a/protocols/Twitter/src/version.h +++ b/protocols/Twitter/src/version.h @@ -1,7 +1,7 @@  #define __MAJOR_VERSION            1
  #define __MINOR_VERSION            1
  #define __RELEASE_NUM              0
 -#define __BUILD_NUM                1
 +#define __BUILD_NUM                2
  #include <stdver.h>
 | 
