All pastes #503217 Raw Edit

Mine

public cpp v1 · immutable
·published 2007-05-22 19:53 UTC
rendered paste body
static BOOL CALLBACK JabberMucJidListDlgProc( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ){	switch( msg ) {	case WM_INITDIALOG:		{			// lParam is ( JABBER_MUC_JIDLIST_INFO * )			LVCOLUMN lvc;			RECT rc;			HWND hwndList;			TranslateDialogDefault( hwndDlg );			hwndList = GetDlgItem( hwndDlg, IDC_LIST );			GetClientRect( hwndList, &rc );			rc.right -= GetSystemMetrics( SM_CXVSCROLL );			lvc.mask = LVCF_WIDTH;			lvc.cx = rc.right - 20;			ListView_InsertColumn( hwndList, 0, &lvc );			lvc.cx = 20;			ListView_InsertColumn( hwndList, 1, &lvc );			//added			lvc.cx = 40;			ListView_InsertColumn( hwndList, 2, &lvc );			// ~added			SendMessage( hwndDlg, WM_JABBER_REFRESH, 0, lParam );		}		return TRUE;	case WM_JABBER_REFRESH:		{			// lParam is ( JABBER_MUC_JIDLIST_INFO * )			JABBER_MUC_JIDLIST_INFO *jidListInfo;			XmlNode *iqNode, *queryNode, *itemNode;			TCHAR* from, *jid, *nick, *localFrom, *jidnick;			LVITEM lvi;			HWND hwndList;			int count, i;			TCHAR title[256];			// Clear current GWL_USERDATA, if any			jidListInfo = ( JABBER_MUC_JIDLIST_INFO * ) GetWindowLong( hwndDlg, GWL_USERDATA );			if ( jidListInfo != NULL ) {				if ( jidListInfo->roomJid != NULL )					mir_free( jidListInfo->roomJid );				if ( jidListInfo->iqNode != NULL )					delete jidListInfo->iqNode;				mir_free( jidListInfo );			}			// Clear current displayed list			hwndList = GetDlgItem( hwndDlg, IDC_LIST );			count = ListView_GetItemCount( hwndList );			lvi.mask = LVIF_PARAM;			lvi.iSubItem = 0;			for ( i=0; i<count; i++ ) {				lvi.iItem = i;				if ( ListView_GetItem( hwndList, &lvi ) == TRUE ) {					if ( lvi.lParam!=( LPARAM )( -1 ) && lvi.lParam!=( LPARAM )( NULL )) {						mir_free(( void * ) lvi.lParam );					}				}			}			ListView_DeleteAllItems( hwndList );			// Set new GWL_USERDATA			jidListInfo = ( JABBER_MUC_JIDLIST_INFO * ) lParam;			SetWindowLong( hwndDlg, GWL_USERDATA, ( LONG ) jidListInfo );			// Populate displayed list from iqNode			lstrcpyn( title, TranslateT( "JID List" ), SIZEOF( title ));			if (( jidListInfo=( JABBER_MUC_JIDLIST_INFO * ) lParam ) != NULL ) {				if (( iqNode = jidListInfo->iqNode ) != NULL ) {					if (( from = JabberXmlGetAttrValue( iqNode, "from" )) != NULL ) {						jidListInfo->roomJid = mir_tstrdup( from );						localFrom = mir_tstrdup( from );						mir_sntprintf( title, SIZEOF( title ), _T("%s ( %s )"),							( jidListInfo->type==MUC_VOICELIST ) ? TranslateT( "Voice List" ) :							( jidListInfo->type==MUC_MEMBERLIST ) ? TranslateT( "Member List" ) :							( jidListInfo->type==MUC_MODERATORLIST ) ? TranslateT( "Moderator List" ) :							( jidListInfo->type==MUC_BANLIST ) ? TranslateT( "Ban List" ) :							( jidListInfo->type==MUC_ADMINLIST ) ? TranslateT( "Admin List" ) :							( jidListInfo->type==MUC_OWNERLIST ) ? TranslateT( "Owner List" ) :							TranslateT( "JID List" ),							localFrom );						mir_free( localFrom );						if (( queryNode=JabberXmlGetChild( iqNode, "query" )) != NULL ) {							lvi.mask = LVIF_TEXT | LVIF_PARAM;							lvi.iSubItem = 0;							lvi.iItem = 0;							for ( i=0; i<queryNode->numChild; i++ ) {								if (( itemNode=queryNode->child[i] ) != NULL ) {									if (( jid=JabberXmlGetAttrValue( itemNode, "jid" )) != NULL ) {										lvi.pszText = jid;										lvi.lParam = ( LPARAM )mir_tstrdup( jid );										ListView_InsertItem( hwndList, &lvi );									} if (jidListInfo->type==MUC_VOICELIST ) { if (( nick=JabberXmlGetAttrValue( itemNode, "nick" )) != NULL) { mir_sntprintf( jidnick, SIZEOF( jidnick ), _T("%s ( %s )") , jid, nick ); lvi.pszText = jidnick; } } lvi.iItem++; }	}	}	} }