/***************************************************************************
             mspecialobject.h  -  Kugar report special field object
             -------------------
   begin     : Mon Aug 23 1999
   copyright : (C) 1999 by Mutiny Bay Software
   email     : info@mutinybaysoftware.com
***************************************************************************/

#ifndef MSPECIALOBJECT_H
#define MSPECIALOBJECT_H

#include <qdatetime.h>

#include "mlabelobject.h"

/**
Kugar report special field object - report date, page number, etc.

@author Mutiny Bay Software
*/
class MSpecialObject: public MLabelObject
{

public:

  /**
  Data type constants
  */
  enum SpecialType {
    Date = 0,
    PageNumber
  };

  /**
  Constructor
  */
  MSpecialObject();

  /**
  Copy constructor
  */
  MSpecialObject(const MSpecialObject &mSpecialObject);

  /**
  Assignment operator
  */
  MSpecialObject operator=(const MSpecialObject &mSpecialObject);

  /**
  Destructor
  */
  virtual ~ MSpecialObject();

protected:

  /**
  Field type
  */
  int type;

  /**
  Format type
  */
  int format;

public:

  /**
  Sets the field's data string with a date
  */
  void setText(QDate d);

  /**
  Sets the field's data string with a page number
  */
  void setText(int page);

  /**
  Sets the field's type
  */
  void setType(int t);

  /**
  Gets the field's type
  */
  int getType();

  /**
  Sets the field's date formatting
  */
  void setDateFormat(int f);

  /**
  Run-time type information
  */
  virtual int RTTI() const;

private:

  /**
  Copies member data from one object to another.

  Used by the copy constructor and assignment operator
  */
  void copy(const MSpecialObject *mSpecialObject);
};

#endif
