summaryrefslogtreecommitdiff
path: root/protocols/Twitter
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Twitter')
-rw-r--r--protocols/Twitter/src/connection.cpp47
-rw-r--r--protocols/Twitter/src/proto.h2
-rw-r--r--protocols/Twitter/src/version.h2
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>