/*************************************************************************** constraintteacherminmorningsperweekform.cpp - description ------------------- begin : 2009 copyright : (C) 2009 by Lalescu Liviu email : Please see https://lalescu.ro/liviu/ for details about contacting Liviu Lalescu (in particular, you can find here the e-mail address) ***************************************************************************/ /*************************************************************************** * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * ***************************************************************************/ #include #include "longtextmessagebox.h" #include "constraintteacherminmorningsperweekform.h" #include "addconstraintteacherminmorningsperweekform.h" #include "modifyconstraintteacherminmorningsperweekform.h" #include #include #include ConstraintTeacherMinMorningsPerWeekForm::ConstraintTeacherMinMorningsPerWeekForm(QWidget* parent): QDialog(parent) { setupUi(this); currentConstraintTextEdit->setReadOnly(true); modifyConstraintPushButton->setDefault(true); constraintsListWidget->setSelectionMode(QAbstractItemView::SingleSelection); connect(constraintsListWidget, SIGNAL(currentRowChanged(int)), this, SLOT(constraintChanged(int))); connect(addConstraintPushButton, SIGNAL(clicked()), this, SLOT(addConstraint())); connect(closePushButton, SIGNAL(clicked()), this, SLOT(close())); connect(removeConstraintPushButton, SIGNAL(clicked()), this, SLOT(removeConstraint())); connect(modifyConstraintPushButton, SIGNAL(clicked()), this, SLOT(modifyConstraint())); connect(constraintsListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(modifyConstraint())); centerWidgetOnScreen(this); restoreFETDialogGeometry(this); QSize tmp1=teachersComboBox->minimumSizeHint(); Q_UNUSED(tmp1); teachersComboBox->addItem(""); for(int i=0; iaddItem(tch->name); } this->filterChanged(); connect(teachersComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(filterChanged())); } ConstraintTeacherMinMorningsPerWeekForm::~ConstraintTeacherMinMorningsPerWeekForm() { saveFETDialogGeometry(this); } bool ConstraintTeacherMinMorningsPerWeekForm::filterOk(TimeConstraint* ctr) { if(ctr->type==CONSTRAINT_TEACHER_MIN_MORNINGS_PER_WEEK){ ConstraintTeacherMinMorningsPerWeek* c=(ConstraintTeacherMinMorningsPerWeek*) ctr; return c->teacherName==teachersComboBox->currentText() || teachersComboBox->currentText()==""; } else return false; } void ConstraintTeacherMinMorningsPerWeekForm::filterChanged() { this->visibleConstraintsList.clear(); constraintsListWidget->clear(); for(int i=0; iaddItem(ctr->getDescription(gt.rules)); } } if(constraintsListWidget->count()>0) constraintsListWidget->setCurrentRow(0); else constraintChanged(-1); } void ConstraintTeacherMinMorningsPerWeekForm::constraintChanged(int index) { if(index<0){ currentConstraintTextEdit->setPlainText(""); return; } assert(indexvisibleConstraintsList.size()); TimeConstraint* ctr=this->visibleConstraintsList.at(index); assert(ctr!=nullptr); currentConstraintTextEdit->setPlainText(ctr->getDetailedDescription(gt.rules)); } void ConstraintTeacherMinMorningsPerWeekForm::addConstraint() { AddConstraintTeacherMinMorningsPerWeekForm form(this); setParentAndOtherThings(&form, this); form.exec(); filterChanged(); constraintsListWidget->setCurrentRow(constraintsListWidget->count()-1); } void ConstraintTeacherMinMorningsPerWeekForm::modifyConstraint() { int valv=constraintsListWidget->verticalScrollBar()->value(); int valh=constraintsListWidget->horizontalScrollBar()->value(); int i=constraintsListWidget->currentRow(); if(i<0){ QMessageBox::information(this, tr("FET information"), tr("Invalid selected constraint")); return; } TimeConstraint* ctr=this->visibleConstraintsList.at(i); ModifyConstraintTeacherMinMorningsPerWeekForm form(this, (ConstraintTeacherMinMorningsPerWeek*)ctr); setParentAndOtherThings(&form, this); form.exec(); filterChanged(); constraintsListWidget->verticalScrollBar()->setValue(valv); constraintsListWidget->horizontalScrollBar()->setValue(valh); if(i>=constraintsListWidget->count()) i=constraintsListWidget->count()-1; if(i>=0) constraintsListWidget->setCurrentRow(i); else this->constraintChanged(-1); } void ConstraintTeacherMinMorningsPerWeekForm::removeConstraint() { int i=constraintsListWidget->currentRow(); if(i<0){ QMessageBox::information(this, tr("FET information"), tr("Invalid selected constraint")); return; } TimeConstraint* ctr=this->visibleConstraintsList.at(i); QString s; s=tr("Remove constraint?"); s+="\n\n"; s+=ctr->getDetailedDescription(gt.rules); QListWidgetItem* item; switch( LongTextMessageBox::confirmation( this, tr("FET confirmation"), s, tr("Yes"), tr("No"), 0, 0, 1 ) ){ case 0: // The user clicked the OK button or pressed Enter gt.rules.removeTimeConstraint(ctr); visibleConstraintsList.removeAt(i); constraintsListWidget->setCurrentRow(-1); item=constraintsListWidget->takeItem(i); delete item; break; case 1: // The user clicked the Cancel button or pressed Escape break; } if(i>=constraintsListWidget->count()) i=constraintsListWidget->count()-1; if(i>=0) constraintsListWidget->setCurrentRow(i); else this->constraintChanged(-1); }