From 7423c0fa346a9aee044f6fa8dc88f666f9092dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Fri, 30 May 2014 10:54:41 +0000 Subject: Facebook: Added hidden option to open url's in different browser It's unicode string with name "OpenUrlBrowser", value is path to browser, in account's branch. git-svn-id: http://svn.miranda-ng.org/main/trunk@9366 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/FacebookRM/src/db.h | 15 ++++++++------- protocols/FacebookRM/src/entities.h | 7 +++++++ protocols/FacebookRM/src/proto.cpp | 21 ++++++++++++++++++++- protocols/FacebookRM/src/proto.h | 5 +++-- 4 files changed, 38 insertions(+), 10 deletions(-) (limited to 'protocols/FacebookRM') diff --git a/protocols/FacebookRM/src/db.h b/protocols/FacebookRM/src/db.h index bac57004c9..9f28ee4211 100644 --- a/protocols/FacebookRM/src/db.h +++ b/protocols/FacebookRM/src/db.h @@ -58,13 +58,14 @@ along with this program. If not, see . #define FACEBOOK_KEY_MESSAGES_ON_OPEN "MessagesOnOpen" #define FACEBOOK_KEY_MESSAGES_ON_OPEN_COUNT "MessagesOnOpenCount" -#define FACEBOOK_KEY_POLL_RATE "PollRate" // [HIDDEN] -#define FACEBOOK_KEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN] -#define FACEBOOK_KEY_DISABLE_LOGOUT "DisableLogout" // [HIDDEN] -#define FACEBOOK_KEY_LOCALE "Locale" // [HIDDEN] - en_US, cs_CZ, etc. -#define FACEBOOK_KEY_LOCAL_TIMESTAMP_UNREAD "UseLocalTimestampUnread" // [HIDDEN] - 1 = use local timestamp for offline messages -#define FACEBOOK_KEY_NASEEMS_SPAM_MODE "NaseemsSpamMode" // [HIDDEN] - 1 = don't load messages sent from other instances (e.g., browser) - known as "Naseem's spam mode" -#define FACEBOOK_KEY_NAME_AS_NICK "NameAsNick" // [HIDDEN] - 0 = don't use real name as nickname, use nickname if possible +#define FACEBOOK_KEY_POLL_RATE "PollRate" // [HIDDEN] +#define FACEBOOK_KEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN] +#define FACEBOOK_KEY_DISABLE_LOGOUT "DisableLogout" // [HIDDEN] +#define FACEBOOK_KEY_LOCALE "Locale" // [HIDDEN] - en_US, cs_CZ, etc. +#define FACEBOOK_KEY_LOCAL_TIMESTAMP_UNREAD "UseLocalTimestampUnread" // [HIDDEN] - 1 = use local timestamp for offline messages +#define FACEBOOK_KEY_NASEEMS_SPAM_MODE "NaseemsSpamMode" // [HIDDEN] - 1 = don't load messages sent from other instances (e.g., browser) - known as "Naseem's spam mode" +#define FACEBOOK_KEY_NAME_AS_NICK "NameAsNick" // [HIDDEN] - 0 = don't use real name as nickname, use nickname if possible +#define FACEBOOK_KEY_OPEN_URL_BROWSER "OpenUrlBrowser" // [HIDDEN] - (unicode) = absolute path to browser to open url links with #define FACEBOOK_KEY_EVENT_NOTIFICATIONS_ENABLE "EventNotificationsEnable" #define FACEBOOK_KEY_EVENT_FEEDS_ENABLE "EventFeedsEnable" diff --git a/protocols/FacebookRM/src/entities.h b/protocols/FacebookRM/src/entities.h index ba3573a106..a99479bdab 100644 --- a/protocols/FacebookRM/src/entities.h +++ b/protocols/FacebookRM/src/entities.h @@ -230,3 +230,10 @@ struct post_status_data { FacebookProto *proto; std::vector walls; }; + +struct open_url +{ + open_url(TCHAR *browser, TCHAR *url) : browser(browser), url(url) {} + TCHAR *browser; + TCHAR *url; +}; diff --git a/protocols/FacebookRM/src/proto.cpp b/protocols/FacebookRM/src/proto.cpp index d97aa419e1..9a5fd73d02 100644 --- a/protocols/FacebookRM/src/proto.cpp +++ b/protocols/FacebookRM/src/proto.cpp @@ -751,6 +751,17 @@ MCONTACT FacebookProto::HContactFromAuthEvent(HANDLE hEvent) return DbGetAuthEventContact(&dbei); } +void FacebookProto::OpenUrlThread(void *p) { + if (p == NULL) + return; + + open_url *data = static_cast(p); + + ShellExecute(NULL, _T("open"), data->browser, data->url, NULL, SW_SHOWDEFAULT); + + delete data; +} + void FacebookProto::OpenUrl(std::string url) { std::string::size_type pos = url.find(FACEBOOK_SERVER_DOMAIN); @@ -775,7 +786,15 @@ void FacebookProto::OpenUrl(std::string url) } ptrT data( mir_utf8decodeT(url.c_str())); - CallService(MS_UTILS_OPENURL, (WPARAM)OUF_TCHAR, (LPARAM)data); + + // Check if there is user defined browser for opening links + ptrT browser(getTStringA(FACEBOOK_KEY_OPEN_URL_BROWSER)); + if (browser != NULL) + // If so, use it to open this link + ForkThread(&FacebookProto::OpenUrlThread, new open_url(browser, data)); + else + // Or use Miranda's service + CallService(MS_UTILS_OPENURL, (WPARAM)OUF_TCHAR, (LPARAM)data); } void FacebookProto::ReadNotificationWorker(void *p) diff --git a/protocols/FacebookRM/src/proto.h b/protocols/FacebookRM/src/proto.h index ea6c9d37eb..d669007f89 100644 --- a/protocols/FacebookRM/src/proto.h +++ b/protocols/FacebookRM/src/proto.h @@ -218,9 +218,10 @@ public: bool GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::string *url); void CheckAvatarChange(MCONTACT hContact, std::string image_url); void ToggleStatusMenuItems(BOOL bEnable); - void ParseSmileys(std::string message, MCONTACT hContact); + void ParseSmileys(std::string message, MCONTACT hContact); + void SaveName(MCONTACT hContact, const facebook_user *fbu); void OpenUrl(std::string url); - void SaveName(MCONTACT hContact, const facebook_user *fbu); + void __cdecl OpenUrlThread(void*); // Handles, Locks HGENMENU m_hMenuRoot, m_hMenuServicesRoot, m_hStatusMind; -- cgit v1.2.3