From b61ba851da0157ace3bdfc1ebbf87156b0b76413 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Wed, 6 Jun 2012 08:58:27 +0000 Subject: protocols plugins moved to protocols git-svn-id: http://svn.miranda-ng.org/main/trunk@327 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Twitter/proto.h | 179 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 protocols/Twitter/proto.h (limited to 'protocols/Twitter/proto.h') diff --git a/protocols/Twitter/proto.h b/protocols/Twitter/proto.h new file mode 100644 index 0000000000..af7a43d321 --- /dev/null +++ b/protocols/Twitter/proto.h @@ -0,0 +1,179 @@ +/* +Copyright © 2009 Jim Porter + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "utility.h" + +#include + +class TwitterProto : public PROTO_INTERFACE +{ +public: + TwitterProto(const char *, const TCHAR *); + ~TwitterProto(); + + __inline void* operator new(size_t size) + { + return calloc(1, size); + } + __inline void operator delete(void *p) + { + free(p); + } + + inline const char * ModuleName() const + { + return m_szModuleName; + } + + //PROTO_INTERFACE + + virtual HANDLE __cdecl AddToList(int, PROTOSEARCHRESULT *); + virtual HANDLE __cdecl AddToListByEvent(int, int, HANDLE); + + virtual int __cdecl Authorize(HANDLE); + virtual int __cdecl AuthDeny(HANDLE, const TCHAR *); + virtual int __cdecl AuthRecv(HANDLE, PROTORECVEVENT *); + virtual int __cdecl AuthRequest(HANDLE, const TCHAR *); + + virtual HANDLE __cdecl ChangeInfo(int, void *); + + virtual HANDLE __cdecl FileAllow(HANDLE, HANDLE, const TCHAR *); + virtual int __cdecl FileCancel(HANDLE, HANDLE); + virtual int __cdecl FileDeny(HANDLE, HANDLE, const TCHAR *); + virtual int __cdecl FileResume(HANDLE, int *, const TCHAR **); + + virtual DWORD __cdecl GetCaps(int, HANDLE = 0); + virtual HICON __cdecl GetIcon(int); + virtual int __cdecl GetInfo(HANDLE, int); + + virtual HANDLE __cdecl SearchBasic(const TCHAR *); + virtual HANDLE __cdecl SearchByEmail(const TCHAR *); + virtual HANDLE __cdecl SearchByName(const TCHAR *, const TCHAR *, const TCHAR *); + virtual HWND __cdecl SearchAdvanced(HWND); + virtual HWND __cdecl CreateExtendedSearchUI(HWND); + + virtual int __cdecl RecvContacts(HANDLE, PROTORECVEVENT *); + virtual int __cdecl RecvFile(HANDLE, PROTORECVFILET *); + virtual int __cdecl RecvMsg(HANDLE, PROTORECVEVENT *); + virtual int __cdecl RecvUrl(HANDLE, PROTORECVEVENT *); + + virtual int __cdecl SendContacts(HANDLE, int, int, HANDLE *); + virtual HANDLE __cdecl SendFile(HANDLE, const TCHAR *, TCHAR **); + virtual int __cdecl SendMsg(HANDLE, int, const char *); + virtual int __cdecl SendUrl(HANDLE, int, const char *); + + virtual int __cdecl SetApparentMode(HANDLE, int); + virtual int __cdecl SetStatus(int); + + virtual HANDLE __cdecl GetAwayMsg(HANDLE); + virtual int __cdecl RecvAwayMsg(HANDLE, int, PROTORECVEVENT *); + virtual int __cdecl SendAwayMsg(HANDLE, HANDLE, const char *); + virtual int __cdecl SetAwayMsg(int, const TCHAR *); + + virtual int __cdecl UserIsTyping(HANDLE, int); + + virtual int __cdecl OnEvent(PROTOEVENTTYPE, WPARAM, LPARAM); + + void UpdateSettings(); + + // Services + int __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM); + int __cdecl GetName(WPARAM, LPARAM); + int __cdecl GetStatus(WPARAM, LPARAM); + int __cdecl ReplyToTweet(WPARAM, LPARAM); + int __cdecl VisitHomepage(WPARAM, LPARAM); + int __cdecl GetAvatar(WPARAM, LPARAM); + int __cdecl SetAvatar(WPARAM, LPARAM); + + // Events + int __cdecl OnContactDeleted(WPARAM, LPARAM); + int __cdecl OnBuildStatusMenu(WPARAM, LPARAM); + int __cdecl OnOptionsInit(WPARAM, LPARAM); + int __cdecl OnTweet(WPARAM, LPARAM); + int __cdecl OnModulesLoaded(WPARAM, LPARAM); + int __cdecl OnPreShutdown(WPARAM, LPARAM); + int __cdecl OnPrebuildContactMenu(WPARAM, LPARAM); + int __cdecl OnChatOutgoing(WPARAM, LPARAM); + int __cdecl OnJoinChat(WPARAM, LPARAM); + int __cdecl OnLeaveChat(WPARAM, LPARAM); + + void __cdecl SendTweetWorker(void *); +private: + // Worker threads + void __cdecl AddToListWorker(void *p); + void __cdecl SendSuccess(void *); + void __cdecl DoSearch(void *); + void __cdecl SignOn(void *); + void __cdecl MessageLoop(void *); + void __cdecl GetAwayMsgWorker(void *); + void __cdecl UpdateAvatarWorker(void *); + void __cdecl UpdateInfoWorker(void *); + + bool NegotiateConnection(); + void UpdateStatuses(bool pre_read, bool popups); + void UpdateMessages(bool pre_read); + void UpdateFriends(); + void UpdateAvatar(HANDLE, const std::string &, bool force=false); + + void ShowPopup(const wchar_t *); + void ShowPopup(const char *); + void ShowContactPopup(HANDLE, const std::tstring &); + + bool IsMyContact(HANDLE, bool include_chat = false); + HANDLE UsernameToHContact(const TCHAR *); + HANDLE AddToClientList(const TCHAR *, const TCHAR *); + void SetAllContactStatuses(int); + + int LOG(const char *fmt, ...); + static void CALLBACK APC_callback(ULONG_PTR p); + + void UpdateChat(const twitter_user &update); + void AddChatContact(const TCHAR *name, const TCHAR *nick=0); + void DeleteChatContact(const TCHAR *name); + void SetChatStatus(int); + + std::string GetAvatarFolder(); + + HANDLE signon_lock_; + HANDLE avatar_lock_; + HANDLE twitter_lock_; + + HANDLE hNetlib_; + HANDLE hAvatarNetlib_; + HANDLE hMsgLoop_; + mir_twitter twit_; + + twitter_id since_id_; + twitter_id dm_since_id_; + + std::string def_avatar_folder_; + HANDLE hAvatarFolder_; + + bool in_chat_; +}; + +// TODO: remove this +inline std::string profile_base_url(const std::string &url) +{ + size_t x = url.find("://"); + if (x == std::string::npos) + return url.substr(0, url.find('/')+1); + else + return url.substr(0, url.find('/', x+3)+1); +} \ No newline at end of file -- cgit v1.2.3