/*************************************************************************** edit properties from/to original ----------------------------------------------------------------------- begin : Mon Jun 28 21:02:16 1999 copyright : (C) 1999-2001 Ewald Arnold (C) 2001 The KDE-EDU team (C) 2005 Peter Hedlund ----------------------------------------------------------------------- ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #include "FromToEntryPage.h" #include "EntryDlg.h" #include #include #include #include #include #include #include #include "blockall.h" #include "MySpinBox.h" #include static TQStringList monthnames; FromToEntryPage::FromToEntryPage ( EntryDlg *_dlgbook, bool multi_sel, grade_t _grade, time_t _time, count_t _qcount, count_t _bcount, TQString faux, TQString label, TQWidget *parent, const char *name ) : FromToEntryPageForm( parent, name ), fauxami(faux), dlgbook(_dlgbook) { monthnames.clear(); monthnames.append (""); monthnames.append (i18n("January")); monthnames.append (i18n("February")); monthnames.append (i18n("March")); monthnames.append (i18n("April")); monthnames.append (i18n("May")); monthnames.append (i18n("June")); monthnames.append (i18n("July")); monthnames.append (i18n("August")); monthnames.append (i18n("September")); monthnames.append (i18n("October")); monthnames.append (i18n("November")); monthnames.append (i18n("December")); connect( bcount_line, TQT_SIGNAL(textChanged(const TQString&)), TQT_SLOT(slotBCount(const TQString&)) ); connect( qcount_line, TQT_SIGNAL(textChanged(const TQString&)), TQT_SLOT(slotQCount(const TQString&)) ); connect( fauxami_line, TQT_SIGNAL(textChanged(const TQString&)), TQT_SLOT(slotFauxAmiSelected(const TQString&)) ); connect( never, TQT_SIGNAL(clicked()), TQT_SLOT(slotNever()) ); connect( today, TQT_SIGNAL(clicked()), TQT_SLOT(slotToday()) ); connect( gradebox, TQT_SIGNAL(activated(int)), TQT_SLOT(slotGradeSelected(int)) ); connect( year_spin, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotYearChanged(int)) ); connect( month_spin, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotMonthChanged(int)) ); connect( day_spin, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotDayChanged(int)) ); year_spin->setData ((TQStringList *) 0, 1980, 2100); month_spin->setData (&monthnames, 1, 12); day_spin->setData ((TQStringList *) 0, 1, 31); TQString s; for (int i = 0; i <= KV_MAX_GRADE; i++) { s.setNum (i); gradebox->insertItem( QueryManager::gradeStr(i) ); } gradebox->setValidator (new BlockAllValidator() ); setTabOrder(fauxami_line, year_spin); setTabOrder(year_spin, month_spin); setTabOrder(month_spin, day_spin); setTabOrder(day_spin, today); setData(multi_sel, _grade, _time, _qcount, _bcount, faux, label); } void FromToEntryPage::setData( bool multi_sel, grade_t _grade, time_t _time, count_t _qcount, count_t _bcount, TQString faux, TQString label) { grade = _grade; qcount = _qcount; bcount = _bcount; fauxami = faux; fauxami_line->setText(fauxami); valid_date = false; TQDateTime dt; TQDate date; if (_time != 0 && !multi_sel) { dt.setTime_t (_time); valid_date = true; date = dt.date(); year = date.year(); month = date.month(); day = date.day(); day_spin->setValue(day); month_spin->setValue(month); year_spin->setValue(year); year_spin->setSpecial(TQString()); month_spin->setSpecial(TQString()); day_spin->setSpecial(TQString()); } else { dt.setTime_t (time(0L)); date = dt.date(); year = date.year(); month = date.month(); day = date.day(); year_spin->setSpecial("----"); month_spin->setSpecial("----"); day_spin->setSpecial("--"); } direc_label->setTitle (label); gradebox->setCurrentItem (grade); TQString s; s.setNum (qcount); qcount_line->setText (s); s.setNum (bcount); bcount_line->setText (s); if (multi_sel) { fauxami_line->setEnabled(false); valid_date = false; bcount_line->setText (""); qcount_line->setText (""); month_spin->setSpecial(" "); day_spin->setSpecial(" "); // FIXME: possibly derive new combobox type // which filters ALL charcters to prevent new input // in edit field gradebox->clearEdit(); } bcount_dirty = false; qcount_dirty = false; date_dirty = false; grade_dirty = false; setModified(false); } void FromToEntryPage::slotFauxAmiSelected(const TQString& s) { setModified(true); fauxami = s; } void FromToEntryPage::slotGradeSelected (int g) { setModified(true); grade_dirty = true; grade = g; } void FromToEntryPage::slotQCount(const TQString& s) { setModified(true); qcount_dirty = true; qcount = atoi (s.local8Bit()); } void FromToEntryPage::slotBCount(const TQString& s) { setModified(true); bcount_dirty = true; bcount = atoi (s.local8Bit()); } time_t FromToEntryPage::getDate () const { // FIXME: warning dialog/don`t quit dialog when date invalid if (valid_date) { TQDate act_date (year, month, day); TQDateTime time_null (TQDate (1970, 1, 1), TQTime (0,0,0)); return -TQDateTime(act_date).secsTo (time_null); } else return 0; } void FromToEntryPage::validate() { if (!valid_date) { valid_date = true; day_spin->setValue(day); month_spin->setValue(month); year_spin->setValue(year); } } void FromToEntryPage::slotYearChanged(int new_year) { setModified(true); date_dirty = true; if (!valid_date) { slotToday(); new_year = year; } year_spin->setSpecial(TQString()); year = new_year; validate(); } void FromToEntryPage::slotDecYear() { setModified(true); } // FIXME: dec month when day decrease below 1 void FromToEntryPage::slotIncYear() { setModified(true); } void FromToEntryPage::slotMonthChanged(int new_month) { setModified(true); date_dirty = true; if (!valid_date) { slotToday(); new_month = month; } month_spin->setSpecial(TQString()); month = new_month; validate(); } void FromToEntryPage::slotDecMonth() { setModified(true); } void FromToEntryPage::slotIncMonth() { setModified(true); } void FromToEntryPage::slotDayChanged(int new_day) { setModified(true); date_dirty = true; if (!valid_date) { slotToday(); new_day = day; } day_spin->setSpecial(TQString()); day = new_day; validate(); } void FromToEntryPage::slotDecDay() { setModified(true); } void FromToEntryPage::slotIncDay() { setModified(true); } void FromToEntryPage::slotToday() { setModified(true); date_dirty = true; TQDateTime dt; dt.setTime_t (time(0L)); year = dt.date().year(); month = dt.date().month(); day = dt.date().day(); day_spin->setValue(day); month_spin->setValue(month); year_spin->setValue(year); year_spin->setSpecial(TQString()); month_spin->setSpecial(TQString()); day_spin->setSpecial(TQString()); validate(); } void FromToEntryPage::slotNever() { setModified(true); date_dirty = true; year = 0; month = 0; day = 0; year_spin->setSpecial("----"); month_spin->setSpecial("----"); day_spin->setSpecial("--"); valid_date = false; } bool FromToEntryPage::isModified() { return modified; } void FromToEntryPage::setEnabled(int enable) { bool ena = enable == EntryDlg::EnableAll; bcount_line->setEnabled(ena); qcount_line->setEnabled(ena); fauxami_line->setEnabled(ena); never->setEnabled(ena); today->setEnabled(ena); gradebox->setEnabled(ena); year_spin->setEnabled(ena); month_spin->setEnabled(ena); day_spin->setEnabled(ena); } void FromToEntryPage::setModified(bool mod) { modified = mod; if (mod) emit sigModified(); } #include "FromToEntryPage.moc"