Example #1
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;
}
Example #2
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 ( !DBGetContactSettingTString( 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 ) { //contact exist, make sure it is in the right group
		DBVARIANT dbv;
		DBVARIANT dbv2;
		char str[50];
		int i;

		if ( pszGroup[0] ) {
			for (i = 0;; i++) {
				itoa(i, str, 10);
				if ( DBGetContactSettingTString( NULL, "CListGroups", str, &dbv )) {
					DBWriteContactSettingTString(hContact, "CList", "Group", pszGroup);
					goto END_GROUPLOOP;
				}

				if ( !DBGetContactSettingTString( hContact, "CList", "Group", &dbv2 )) {
					if ( dbv.ptszVal[0] != '\0' && dbv2.ptszVal[0] != '\0' && !lstrcmpi( dbv.ptszVal + 1, dbv2.ptszVal )) {
							DBFreeVariant(&dbv);
							DBFreeVariant(&dbv2);
							goto END_GROUPLOOP;
						}
						DBFreeVariant(&dbv2);
					}
					DBFreeVariant(&dbv);
		}	}

END_GROUPLOOP:
		DBWriteContactSettingWord(hContact, pszModule, "Status", ID_STATUS_OFFLINE);
		DBWriteContactSettingTString(hContact, pszModule, "Nick", pszDisplayName );
		if(iType != GCW_SERVER)
			DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);
		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 )
		DBWriteContactSettingTString(hContact, "CList", "Group", pszGroup );
		else
			DBDeleteContactSetting(hContact, "CList", "Group");
	DBWriteContactSettingTString( hContact, pszModule, "Nick", pszDisplayName );
	DBWriteContactSettingTString( hContact, pszModule, "ChatRoomID", pszRoom );
		DBWriteContactSettingByte(hContact, pszModule, "ChatRoom", (BYTE)iType);
		DBWriteContactSettingWord(hContact, pszModule, "Status", ID_STATUS_OFFLINE);
//		if(iType == GCW_SERVER)
			DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);
		return hContact;
	}