/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you want to add, delete, or rename functions or slots, use
** Qt Designer to update this file, preserving your code.
**
** You should not define a constructor or destructor in this file.
** Instead, write your code in functions called init() and destroy().
** These will automatically be called by the form's constructor and
** destructor.
*****************************************************************************/

#define TR	QObject::tr

void DlgAtcd_txt::init()
{ // initialise le combo des années
 for (int i = 1900; i < 2050; ++i)
 { annee->insertItem(QString::number(i));}
 setDateObserv(QDate::currentDate());
 ATCD_Med.clear();
 ATCD_Chir.clear();
 toViewOnly = FALSE;
 line1->setFrameStyle ( QFrame::HLine );
 line1->setFrameShadow (QFrame::Sunken );
}


void DlgAtcd_txt::setRubriques(QStringList& med, QStringList& chir)
{ATCD_Med = med ;
 ATCD_Chir= chir;
 m_Combo_Medical->insertStringList( ATCD_Med );
 m_Combo_Chirurgical->insertStringList( ATCD_Chir );

}

void DlgAtcd_txt::setATCD_toView(Atcd_Code* pAtcd_Code, Atcd_Element* atcd)
{ toViewOnly = TRUE;
  lbl_Titre->setText("<b>"+TR("Visualisation d'un antécédent")+"</b>");
  m_LineEdit_Libelle->setText( atcd->m_Libelle );
  m_LineEdit_Libelle->setReadOnly(TRUE);
  m_LineEdit_Commentaire->setText ( atcd->m_Commentaire );
  m_LineEdit_Commentaire->setReadOnly(TRUE);
  if ( atcd->m_Date.isValid() )
  { chkDate->setChecked(TRUE);
    setDateObserv( atcd->m_Date );
  }
  // Reste à gérer les rubriques
  if (atcd->m_Rubrique != "")
  { bool isMed, isChir, isAllergie;
    int id = 0;
    pAtcd_Code->getIdRubrique( *atcd, isMed, isChir, isAllergie, id);
    if (isMed) m_Combo_Medical->setCurrentItem(id);
    if (isChir) m_Combo_Chirurgical->setCurrentItem(id);
    if (isAllergie) m_Combo_Medical->setCurrentText( TR("Allergie") );
  }
  m_Combo_Medical->setEnabled(FALSE);
  m_Combo_Chirurgical->setEnabled(FALSE);
  chkDate->setEnabled(FALSE);
}

void DlgAtcd_txt::setToUpdate(bool b)
{ if (!b) {toViewOnly=TRUE; return;}
  toViewOnly=FALSE;
  lbl_Titre->setText("<b>"+TR("Modification d'un antécédent")+"</b>");
  m_LineEdit_Libelle->setReadOnly(FALSE);
  m_LineEdit_Commentaire->setReadOnly(FALSE);
  m_Combo_Medical->setEnabled(TRUE);
  m_Combo_Chirurgical->setEnabled(TRUE);
  chkDate->setEnabled(TRUE);
  jour->setEnabled(TRUE);
  mois->setEnabled(TRUE);
  annee->setEnabled(TRUE);
}


void DlgAtcd_txt::getInfos(QString& libelle, QString& rubrique, QString& date, QString& commentaire)
{ libelle = m_LineEdit_Libelle->text();
  commentaire = m_LineEdit_Commentaire->text();
  rubrique = "";
  if (m_Combo_Medical->currentItem() != 0) rubrique = m_Combo_Medical->currentText();
  else if (m_Combo_Chirurgical->currentItem() !=0) rubrique = m_Combo_Chirurgical->currentText();
  if ( chkDate->isChecked() )	date = getDateObserv_ISODate();
  else				date = "";
}


////////////////////////////////////////////////////////////////////////////
//////////////////////////   GESTION DATES  ////////////////////////////////
////////////////////////////////////////////////////////////////////////////


/*! \brief Lorsque l'utilisateur change de mois, recalcule le nombre de jours et met à jour le combo des jours du mois.
 */
void DlgAtcd_txt::mois_activated(int )
{  int nbJours = 0;
   int ms = mois->currentItem() + 1;
   QString toAdd = "";
   int jj = jour->currentItem();
   jour->clear();

   if ((ms == 1) ||(ms == 3) ||(ms == 5) ||(ms == 7) ||(ms == 8) ||(ms == 10) ||(ms == 12) )
	nbJours = 31;
   else if ((ms == 2))
   { // Test année bissextile
       if (annee->currentText().toInt() % 4 == 0) nbJours = 29;
       else nbJours = 28;
   }
   else nbJours = 30;

   for (int i = 0; i < nbJours; ++i)
    { toAdd = QString::number(i+1);
       if (i < 9) toAdd.prepend("0");
      jour->insertItem(toAdd);
    }

   if (jj >= jour->count()) jj = jour->count() - 1;
   jour->setCurrentItem(jj);
}


/*! \brief A tout moment, retourne la date de l'honoraire au format string : "dd-MM-yyyy"
 */
QString DlgAtcd_txt::getDateObserv()
{  QString tmp = "";
    tmp = QString::number(mois->currentItem() + 1);
    if (mois->currentItem() < 9) tmp.prepend("0");
    return jour->currentText() + "-" + tmp + "-" + annee->currentText();
}

/*! \brief A tout moment, retourne la date de l'honoraire au format string : "yyyy-MM-dd"
 */
QString DlgAtcd_txt::getDateObserv_ISODate()
{  QString tmp = "";
    tmp = QString::number(mois->currentItem() + 1);
    if (mois->currentItem() < 9) tmp.prepend("0");
    return annee->currentText() + "-" + tmp + "-" +  jour->currentText() ;
}

/*!\brief A tout moment, met les combobox de la date aux bonnes valeurs. La date est passée en paramètre au format "dd-MM-yyyy".
 */
void DlgAtcd_txt::setDateObserv(QString dt_str)
{}

/*! \brief A tout moment, met les combobox de la date aux bonnes valeurs. La date est passée en paramètre au format "dd-MM-yyyy".
 */
void DlgAtcd_txt::setDateObserv(QDate dt)
{ annee->setCurrentText(QString::number( dt.year() ));
  mois->setCurrentItem(dt.month() - 1);
  mois_activated( dt.month() - 1);
  jour->setCurrentItem( dt.day() - 1);
}


/*! \brief Si l'utilisateur change d'année et que le mois est sur février -> gérer les années bissextiles et mettre à jour le combo des jours.
 */
void DlgAtcd_txt::annee_activated( int  )
{ if (mois->currentItem() == 1)     mois_activated( 1 );
}



void DlgAtcd_txt::but_Valider_clicked()
{ accept();
}


void DlgAtcd_txt::but_Annuler_clicked()
{ reject();
}


void DlgAtcd_txt::m_Combo_Medical_activated( int )
{m_Combo_Chirurgical->setCurrentItem(0);}
void DlgAtcd_txt::m_Combo_Chirurgical_activated( int )
{m_Combo_Medical->setCurrentItem(0);}


void DlgAtcd_txt::chkDate_clicked()
{ if ( chkDate->isChecked() )
    { jour->setEnabled(TRUE); mois->setEnabled(TRUE); annee->setEnabled(TRUE); }
  else
    { jour->setEnabled(FALSE); mois->setEnabled(FALSE); annee->setEnabled(FALSE); }
}
