/***************************************************************************
                          formular.h  -  Interface Klasse CFormular
                             -------------------                                         
    begin                : Wed Aug 4 1999                                           
    copyright            : (C) 1999 by Stephan Uhlmann                         
    email                : suhlmann@gmx.de                                     
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   * 
 *                                                                         *
 ***************************************************************************/


#ifndef __FORMULAR_H__
#define __FORMULAR_H__

#include "dokument.h" /* Import Klasse CDokument */


/**
 * Die Klasse CFormular stellt die Daten und Methoden zur Verfuegung
 * um eine Formular zu verwalten.
 * Diese Klasse erbt von der Klasse CDokument und wird geerbt von
 * der Klasse CDauerauftrag.
 */

/* jedes Formlular ist ein Dokument */
class CFormular : public CDokument
{
 private:
  /** Pruefzustand des Formulars */
  bool Geprueft;
  /** Kunde unterschrieben? */
  bool UnterschriftKundeVorhanden;
  /** Formvorschrift des Formulars */
  QString Formvorschrift;
  /** Datum der letzten Aenderung */
  QDateTime Aenderungsdatum;

 public:
  /** Konstruktor */
  /* pre: this existiert nicht */
  /* post: this existiert und ist gueltig */
  CFormular();

  /** Destruktor */
  /* pre: this existiert */
  /* post: this existiert nicht */
  virtual ~CFormular();

  /** generiert ein Objekt des Typs CFormular und gibt einen Zeiger darauf zurueck */
  /* pre: CFormular existiert nicht */
  /* post: CFormular existiert und ist gueltig */
  virtual CDokument* Generate() const;

  /** zerstoert ein Formular wieder */
  /* pre: this existiert */
  /* post: this ist ungueltig */
  virtual void Free();

  /** prueft die Klasseninvarianz des Objekts */
  /* pre: this existiert */
  /* post: TRUE wenn this gueltig, sonst FALSE */
  virtual bool ClassInvariant() const;

  /** kopiert das Objekt src in das aktuelle Objekt */
  /* pre: this existiert; src ist gueltig */
  /* post: this ist gueltig; this ist gleich src */
  virtual bool Copy(CDokument* src);

  /** vergleicht den Inhalt zweier Formulare */
  /* pre: this und src existieren und sind gueltig */
  /* post: TRUE wenn Inhalt von this gleich Inhalt von src, sonst FALSE */
  virtual bool EqualValue(CDokument* src) const;

  /** initialisiert ein bestehendes Formular mit gegebenen Werten */
  /* pre: this existiert und ist gueltig */
  /* post: this enthaelt die gewuenschten Werte */
  bool InitFormular(QString NVerfasser,
                    QString NTitel,
          	        QString NSchluessel,
										bool NGeprueft,
										bool NUnterschriftKundeVorhanden,
										QString NFormvorschrift);

  /** gibt den Pruefzustand des Formulars zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  bool LieferePruefzustand() const;

  /** aendert den Pruefzustand des Formulars */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AenderePruefzustand(bool NGeprueft);

  /** gibt zurueck ob der Kunde das Formular unterschrieben hat */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  bool LiefereUnterschriftKundeVorhanden() const;

  /** aendert die Tatsache ob der Kunde das Formular unterschrieben hat */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereUnterschriftKundeVorhanden(bool NUnterschriftKundeVorhanden);

  /** gibt die Formvorschrift des Formulars zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereFormvorschrift() const;

  /** gibt zurueck wann das Formular zum letzten Mal geaendert wurde */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QDateTime  LiefereAenderungsdatum() const;

  /** setzt das Datum der letzten Aenderung des Formulars */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereAenderungsdatum(QDateTime NDatum);


  /** prueft ob die Formvorschrift zulaessig ist */
  /* pre:  */
  /* post: TRUE wenn src gueltig ist, sonst FALSE */
  bool ZulaessigeFormvorschrift(QString src) const;


  /** schreibt den Inhalt des Formulares in den angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das CFormular geschrieben werden konnte, sonst FALSE */
  bool readData(QDataStream* stream);

  /** laedt den Inhalt des Formulares aus dem angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das CFormular geladen werden konnte, sonst FALSE */
  bool writeData(QDataStream* stream) const;


};



#endif /* __FORMULAR_H__ */













Documentation generated by uhlmann@fara2 on Mon Aug 30 20:37:52 MEST 1999