APP-COMM-Capitel/capitel/source.os2/CNTR.C

186 lines
6.8 KiB
C

#define INCL_WIN
#define INCL_DOS
#include <os2.h>
#include <stdio.h>
#include <string.h>
#include "capitel.h"
#include "cntr.h"
#include "..\..\common\source\global.h"
//#include "..\..\common\source\texte.h"
#include "texte.h"
#define NUM_OF_FIELDS 6 /* Number of Fields in Details View */
short InitContainer( void )
{
PFIELDINFO pfiDetails, pfiCurrent, pfiSplit;
CNRINFO cntrInfo;
FIELDINFOINSERT finfoInsert;
SIZEL iconSize = { 16, 16 };
int fields = NUM_OF_FIELDS;
/* Remove all Container Items */
WinSendMsg( hwndCntr, CM_REMOVERECORD, MPFROMP( NULL ),
MPFROM2SHORT( 0, CMA_FREE ) );
/* Remove all Info about Details-View */
WinSendMsg( hwndCntr, CM_REMOVEDETAILFIELDINFO, MPFROMP( NULL ),
MPFROM2SHORT( 0,CMA_FREE ) );
/* Get Storage for Colums */
pfiDetails= (PFIELDINFO) PVOIDFROMMR( WinSendMsg(hwndCntr,
CM_ALLOCDETAILFIELDINFO,
MPFROMSHORT( fields ),
0 ) );
if( pfiDetails == NULL )
return -1;
/* Set up 1st Column (Icon) */
pfiCurrent = pfiDetails;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_BITMAPORICON | CFA_FIREADONLY |
CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = "";
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.icon );
pfiCurrent->pUserData = NULL;
/* Set up 2nd Column (Caller) */
pfiCurrent = pfiCurrent->pNextFieldInfo;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_STRING | CFA_FIREADONLY | CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = CALLER;
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.pcaller );
pfiCurrent->pUserData = NULL;
/* Set up 3rd Column (Data) */
pfiCurrent = pfiCurrent->pNextFieldInfo;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_STRING | CFA_FIREADONLY | CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = DATE;
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.pdate );
pfiCurrent->pUserData = NULL;
/* Set up 4th Column (Time) */
pfiCurrent = pfiCurrent->pNextFieldInfo;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_STRING | CFA_FIREADONLY | CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = TIME;
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.ptime );
pfiCurrent->pUserData = NULL;
/* Set up 5th Column (Seconds) */
pfiCurrent = pfiCurrent->pNextFieldInfo;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_ULONG | CFA_FIREADONLY | CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = SECS;
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.seconds );
pfiCurrent->pUserData = NULL;
/* Set up 6th Column (Called EAZ) */
pfiCurrent = pfiCurrent->pNextFieldInfo;
pfiCurrent->cb = sizeof( FIELDINFO );
pfiCurrent->flData = CFA_STRING | CFA_FIREADONLY | CFA_VCENTER;
pfiCurrent->flTitle = CFA_VCENTER;
pfiCurrent->pTitleData = DEST;
pfiCurrent->offStruct = FIELDOFFSET( CntrRec, itemInfo.pcalledEAZ );
pfiCurrent->pUserData = NULL;
/* Set up Container Info */
cntrInfo.flWindowAttr = CV_DETAIL | CA_DETAILSVIEWTITLES |
CA_TITLESEPARATOR;
cntrInfo.cb = sizeof( CNRINFO );
cntrInfo.cyLineSpacing = 1;
cntrInfo.slBitmapOrIcon = iconSize;
/* cntrInfo.xVertSplitbar = 350; */
/* cntrInfo.pFieldInfoLast = pfiSplit; */
WinSendMsg( hwndCntr, CM_SETCNRINFO, MPFROMP( &cntrInfo ),
MPFROMLONG( CMA_FLWINDOWATTR | CMA_LINESPACING |
CMA_SLBITMAPORICON ) );
finfoInsert.cb = sizeof( FIELDINFOINSERT );
finfoInsert.pFieldInfoOrder = (PFIELDINFO) CMA_FIRST;
finfoInsert.fInvalidateFieldInfo = TRUE;
finfoInsert.cFieldInfoInsert = fields;
WinSendMsg( hwndCntr, CM_INSERTDETAILFIELDINFO, MPFROMP( pfiDetails ),
MPFROMP( &finfoInsert ) );
return 0;
}
short AddItem( HPOINTER bmp, char *caller, char *date, char *time,
ULONG secs, char *calledEAZ, char *filename, char digital )
{
CntrRec *rec;
RECORDINSERT riInsert;
rec = (CntrRec *) PVOIDFROMMR( WinSendMsg( hwndCntr, CM_ALLOCRECORD,
MPFROMLONG(sizeof(CntrRec)-sizeof(MINIRECORDCORE)),
MPFROMSHORT( 1 ) ) );
rec->itemInfo.icon = (HPOINTER) bmp;
rec->itemInfo.seconds = secs;
rec->itemInfo.digital = digital;
strcpy( rec->itemInfo.caller, caller );
strcpy( rec->itemInfo.date, date );
strcpy( rec->itemInfo.time, time );
strcpy( rec->itemInfo.filename, filename );
strcpy( rec->itemInfo.calledEAZ, calledEAZ );
rec->itemInfo.pcaller = rec->itemInfo.caller;
rec->itemInfo.pdate = rec->itemInfo.date;
rec->itemInfo.ptime = rec->itemInfo.time;
rec->itemInfo.pfilename = rec->itemInfo.filename;
rec->itemInfo.pcalledEAZ = rec->itemInfo.calledEAZ;
//rec->itemInfo.pdigital = rec->itemInfo.digital;
rec->core.hptrIcon = (HPOINTER) bmp;
rec->core.pszIcon = rec->itemInfo.caller;
riInsert.cb = sizeof( RECORDINSERT );
riInsert.pRecordOrder = ( PRECORDCORE ) CMA_END;
riInsert.pRecordParent = NULL;
riInsert.fInvalidateRecord = TRUE;
riInsert.zOrder = CMA_TOP;
riInsert.cRecordsInsert = 1;
WinSendMsg( hwndCntr,
CM_INSERTRECORD,
MPFROMP( rec ),
MPFROMP( &riInsert ) );
WinSendMsg( hwndCntr,
CM_SETRECORDEMPHASIS,
MPFROMP( rec ),
MPFROM2SHORT( TRUE, CRA_SELECTED | CRA_CURSORED ) );
WinSendMsg( hwndCntr,
WM_CHAR, MPFROMSH2CH( KC_VIRTUALKEY, 0, 0 ),
MPFROM2SHORT( 0, VK_END ) );
return 0;
}
void EmptyContainer( void )
{
/* Remove all Container Items */
WinSendMsg( hwndCntr, CM_REMOVERECORD, MPFROMP( NULL ),
MPFROM2SHORT( 0, CMA_FREE ) );
/* Redraw Container */
WinSendMsg( hwndCntr, CM_INVALIDATERECORD, MPFROMP( NULL ),
MPFROM2SHORT( 0, CMA_REPOSITION ) );
}