From 50feaa0ffc1b2e120eb6b22b2970f5bc2f7dc7a4 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sun, 14 Oct 2012 13:35:25 +0000 Subject: TabSRMM: folders restructurization git-svn-id: http://svn.miranda-ng.org/main/trunk@1923 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/chat/clist.cpp | 326 ----------------------------------------- 1 file changed, 326 deletions(-) delete mode 100644 plugins/TabSRMM/chat/clist.cpp (limited to 'plugins/TabSRMM/chat/clist.cpp') diff --git a/plugins/TabSRMM/chat/clist.cpp b/plugins/TabSRMM/chat/clist.cpp deleted file mode 100644 index a3c5b75d24..0000000000 --- a/plugins/TabSRMM/chat/clist.cpp +++ /dev/null @@ -1,326 +0,0 @@ -/* -astyle --force-indent=tab=4 --brackets=linux --indent-switches - --pad=oper --one-line=keep-blocks --unpad=paren - -Chat module plugin for Miranda NG - -Copyright (C) 2003 Jörgen Persson - -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, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Group chat module: contact list support functions. Add chat rooms as -contacts and handle default action for such contacts. - -This code was taken in almost unmodified from from the chat.dll -plugin, originally written by Jörgen Persson - -$Id: clist.c 10402 2009-07-24 00:35:21Z silvercircle $ - -*/ - -/* - * handles interaction of the group chat implementation with the contact list plugin - */ - -#include "../src/commonheaders.h" - -char *szChatIconString = "chaticon"; - -extern HANDLE hJoinMenuItem, hLeaveMenuItem; - -static HANDLE Clist_GroupExists(TCHAR *tszGroup) -{ - unsigned int i = 0; - TCHAR* _t = 0; - char str[10]; - INT_PTR result = 0; - DBVARIANT dbv = {0}; - int match; - - do { - _itoa(i, str, 10); - result = M->GetTString(0, "CListGroups", str, &dbv); - if (!result) { - match = (!_tcscmp(tszGroup, &dbv.ptszVal[1]) && (lstrlen(tszGroup) == lstrlen(&dbv.ptszVal[1]))); - DBFreeVariant(&dbv); - if (match) - return((HANDLE)(i + 1)); - } - i++; - } - while(result == 0); - return 0; -} - -HANDLE CList_AddRoom(const char* pszModule, const TCHAR* pszRoom, const TCHAR* pszDisplayName, int iType) -{ - HANDLE hContact = CList_FindRoom(pszModule, pszRoom); - DBVARIANT dbv; - TCHAR pszGroup[50]; - - *pszGroup = '\0'; - if (!M->GetTString(NULL, "Chat", "AddToGroup", &dbv)) { - if (lstrlen(dbv.ptszVal) > 0) - lstrcpyn(pszGroup, dbv.ptszVal, 50); - DBFreeVariant(&dbv); - } else - lstrcpyn(pszGroup, _T("Chat rooms"), 50); - - if (pszGroup[0]) - CList_CreateGroup(pszGroup); - - if (hContact) - return hContact; - - // here we create a new one since no one is to be found - - if ((hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0)) == NULL) - return NULL; - - CallService(MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) pszModule); - if (pszGroup && lstrlen(pszGroup) > 0) - CallService(MS_CLIST_CONTACTCHANGEGROUP, (WPARAM)hContact, (LPARAM)g_Settings.hGroup); - else - DBDeleteContactSetting(hContact, "CList", "Group"); - - M->WriteTString(hContact, pszModule, "Nick", pszDisplayName); - M->WriteTString(hContact, pszModule, "ChatRoomID", pszRoom); - M->WriteByte(hContact, pszModule, "ChatRoom", (BYTE)iType); - DBWriteContactSettingWord(hContact, pszModule, "Status", ID_STATUS_OFFLINE); - return hContact; -} - -BOOL CList_SetOffline(HANDLE hContact, BOOL bHide) -{ - if (hContact) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - int i = M->GetByte(hContact, szProto, "ChatRoom", 0); - DBWriteContactSettingWord(hContact, szProto, "ApparentMode", (LPARAM) 0); - DBWriteContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); - return TRUE; - } - return FALSE; -} - -BOOL CList_SetAllOffline(BOOL bHide, const char *pszModule) -{ - HANDLE hContact; - char* szProto; - - hContact = db_find_first(); - while (hContact) { - szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (MM_FindModule(szProto)) { - if (!pszModule || (pszModule && !strcmp(pszModule, szProto))) { - int i = M->GetByte(hContact, szProto, "ChatRoom", 0); - if (i != 0) { - DBWriteContactSettingWord(hContact, szProto, "ApparentMode", (LPARAM)(WORD) 0); - DBWriteContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); - } - } - } - - hContact = db_find_next(hContact); - } - return TRUE; -} - -int CList_RoomDoubleclicked(WPARAM wParam, LPARAM lParam) -{ - DBVARIANT dbv; - char *szProto; - BOOL bRedrawFlag = FALSE; - bool fCreate = false; - - HANDLE hContact = (HANDLE)wParam; - if (!hContact) - return 0; - - szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (MM_FindModule(szProto)) { - if (M->GetByte(hContact, szProto, "ChatRoom", 0) == 0) - return 0; - - if (!M->GetTString(hContact, szProto, "ChatRoomID", &dbv)) { - SESSION_INFO* si = SM_FindSession(dbv.ptszVal, szProto); - if (si) { - // is the "toggle visibility option set, so we need to close the window? - if (si->hWnd != NULL - && M->GetByte("Chat", "ToggleVisibility", 0) == 1 - && !CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, 0) - && IsWindowVisible(si->hWnd) - && !IsIconic(si->pContainer->hwnd)) { - PostMessage(si->hWnd, GC_CLOSEWINDOW, 0, 0); - DBFreeVariant(&dbv); - return 1; - } - else - fCreate = true; - - ShowRoom(si, WINDOW_VISIBLE, TRUE); - if (lParam && fCreate) { - SendMessage(si->hWnd, DM_ACTIVATEME, 0, 0); - if (si->dat) - SetForegroundWindow(si->dat->pContainer->hwnd); - } - } - DBFreeVariant(&dbv); - return 1; - } - } - - return 0; -} - -INT_PTR CList_EventDoubleclicked(WPARAM wParam, LPARAM lParam) -{ - return CList_RoomDoubleclicked((WPARAM)((CLISTEVENT*)lParam)->hContact, (LPARAM) 0); -} - -INT_PTR CList_JoinChat(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( szProto ) { - if ( DBGetContactSettingWord( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) - CallProtoService( szProto, PS_JOINCHAT, wParam, lParam ); - else - CList_RoomDoubleclicked( wParam, 0 ); - } } - - return 0; -} - -INT_PTR CList_LeaveChat(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( szProto ) - CallProtoService( szProto, PS_LEAVECHAT, wParam, lParam ); - } - return 0; -} - -int CList_PrebuildContactMenu(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - - CLISTMENUITEM clmi = {0}; - clmi.cbSize = sizeof(CLISTMENUITEM); - clmi.flags = CMIM_FLAGS | CMIF_DEFAULT | CMIF_HIDDEN; - - if ( szProto ) { - // display this menu item only for chats - if ( M->GetByte(hContact, szProto, "ChatRoom", 0 )) { - // still hide it for offline protos - if ( CallProtoService( szProto, PS_GETSTATUS, 0, 0 ) != ID_STATUS_OFFLINE ) { - clmi.flags &= ~CMIF_HIDDEN; - clmi.flags |= CMIM_NAME; - - if ( DBGetContactSettingWord( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) - clmi.pszName = ( char* )LPGEN("Join chat"); - else - clmi.pszName = ( char* )LPGEN("Open chat window"); - } } } - CallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hJoinMenuItem, ( LPARAM )&clmi ); - - clmi.flags &= ~(CMIM_NAME | CMIF_DEFAULT); - clmi.flags |= CMIF_NOTOFFLINE; - CallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hLeaveMenuItem, ( LPARAM )&clmi ); - } - return 0; -} - -INT_PTR CList_PrebuildContactMenuSvc(WPARAM wParam, LPARAM lParam) -{ - return CList_PrebuildContactMenu(wParam, lParam); -} - - -void CList_CreateGroup(TCHAR* group) -{ - if (!group) - return; - - g_Settings.hGroup = Clist_GroupExists(group); - - if (g_Settings.hGroup == 0) { - g_Settings.hGroup = (HANDLE)CallService(MS_CLIST_GROUPCREATE, 0, (LPARAM)group); - - if (g_Settings.hGroup) { - CallService(MS_CLUI_GROUPADDED, (WPARAM)g_Settings.hGroup, 0); - CallService(MS_CLIST_GROUPSETEXPANDED, (WPARAM)g_Settings.hGroup, 1); - } - } -} - -BOOL CList_AddEvent(HANDLE hContact, HICON Icon, HANDLE event, int type, const TCHAR* fmt, ...) -{ - CLISTEVENT cle; - va_list marker; - TCHAR* szBuf = (TCHAR*)alloca(4096 * sizeof(TCHAR)); - - if (!fmt || lstrlen(fmt) < 1 || lstrlen(fmt) > 2000) - return FALSE; - - va_start(marker, fmt); - _vstprintf(szBuf, fmt, marker); - va_end(marker); - - cle.cbSize = sizeof(cle); - cle.hContact = (HANDLE)hContact; - cle.hDbEvent = (HANDLE)event; - cle.flags = type + CLEF_TCHAR; - cle.hIcon = Icon; - cle.pszService = "GChat/DblClickEvent" ; - cle.ptszTooltip = TranslateTS(szBuf); - if (type) { - if (!CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, (LPARAM)0)) - CallService(MS_CLIST_ADDEVENT, (WPARAM) hContact, (LPARAM) &cle); - } else { - if (CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, (LPARAM)0)) - CallService(MS_CLIST_REMOVEEVENT, (WPARAM)hContact, (LPARAM)"chaticon"); - CallService(MS_CLIST_ADDEVENT, (WPARAM) hContact, (LPARAM) &cle); - } - return TRUE; -} - -HANDLE CList_FindRoom(const char* pszModule, const TCHAR* pszRoom) -{ - HANDLE hContact = db_find_first(); - while (hContact) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (szProto && !lstrcmpiA(szProto, pszModule)) { - if (M->GetByte(hContact, szProto, "ChatRoom", 0) != 0) { - DBVARIANT dbv; - if (!M->GetTString(hContact, szProto, "ChatRoomID", &dbv)) { - if (!lstrcmpi(dbv.ptszVal, pszRoom)) { - DBFreeVariant(&dbv); - return hContact; - } - DBFreeVariant(&dbv); - } - } - } - - hContact = db_find_next(hContact); - } - return 0; -} - -- cgit v1.2.3