/*
 * For legal stuff see the file COPYRIGHT
 */
#import "ColCell.h"
#import "Session.h"		/* this is bogus!!! fix it!! TBD */
#import "Expense.h"		/* this is bogus!!! fix it!! TBD */

#define DATE_OFFSET	3.0

/* For sessions */
#define TIME_OFFSET	62.0
#define MINS_OFFSET	104.0
#define TASK_OFFSET	136.0

/* For expenses */
#define AMOUNT_OFFSET	62.0
#define DESC_OFFSET	116.0

/* Font info */
static NXCoord ascender, descender, lineHeight;

@implementation ColCell

- (void)setCellData:obj
{
  [self setStringValue:""];
  data = obj;
}

- cellData
{
  return data;
}

- setFont:fontObj
{
  [super setFont:fontObj];
  /*
   * save this info so we don't have to look it up every time we draw
   * Note:  support for a TextCell is a font object
   */
  NXTextFontInfo(support, &ascender, &descender, &lineHeight);
  return self;
}    

/*
 * Override the drawing method to put the data in two columns
 */
- drawInside:(const NXRect *)cellFrame inView:controlView
{
  NXCoord baseX, baseY;
  char buf[80];

  baseX = NX_X(cellFrame);
  baseY = NX_Y(cellFrame) + lineHeight - descender;

  [super drawInside:cellFrame inView:controlView];
  PSsetgray(NX_BLACK);

  /********* CLEAN THIS UP!! *********/

  if ( [data class] == [Session class] ) {
    PSmoveto( baseX + DATE_OFFSET, baseY );
    PSshow( [data startDateString] );

    PSmoveto( baseX + TIME_OFFSET, baseY );
    PSshow( [data startTimeString] );

    PSmoveto( baseX + MINS_OFFSET, baseY );
    sprintf( buf, "%d", [data minutes] );
    PSshow( buf );

    PSmoveto( baseX + TASK_OFFSET, baseY );
    PSshow( [data description] );

  } else {			/* otherwise, it's an Expense object */

    PSmoveto( baseX + DATE_OFFSET, baseY );
    PSshow( [data dateString] );

    PSmoveto( baseX + AMOUNT_OFFSET, baseY );
    sprintf( buf, "%.2f", [data amount] );
    PSshow( buf );

    PSmoveto( baseX + DESC_OFFSET, baseY );
    PSshow( [data description] );
  }

  return self;
}

- copyFromZone:(NXZone *)zone
{
  ColCell *copy;

  copy = [super copyFromZone:zone];
  copy->data = data;
  return copy;
}

@end
