Back to index

fet  5.18.0
Public Slots | Public Member Functions | Public Attributes
ConstraintActivitiesSameStartingTimeForm Class Reference

#include <constraintactivitiessamestartingtimeform.h>

List of all members.

Public Slots

void constraintChanged (int index)
void addConstraint ()
void removeConstraint ()
void modifyConstraint ()
void filterChanged ()
void help ()

Public Member Functions

 ConstraintActivitiesSameStartingTimeForm (QWidget *parent)
 ~ConstraintActivitiesSameStartingTimeForm ()
void refreshConstraintsListWidget ()
bool filterOk (TimeConstraint *ctr)

Public Attributes

TimeConstraintsList visibleConstraintsList

Detailed Description

Definition at line 26 of file constraintactivitiessamestartingtimeform.h.


Constructor & Destructor Documentation

Definition at line 30 of file constraintactivitiessamestartingtimeform.cpp.

                                                                                                 : QDialog(parent)
{
       setupUi(this);

       currentConstraintTextEdit->setReadOnly(true);

       modifyConstraintPushButton->setDefault(true);
       
       constraintsListWidget->setSelectionMode(QAbstractItemView::SingleSelection);

       connect(addConstraintPushButton, SIGNAL(clicked()), this, SLOT(addConstraint()));
       connect(removeConstraintPushButton, SIGNAL(clicked()), this, SLOT(removeConstraint()));
       connect(closePushButton, SIGNAL(clicked()), this, SLOT(close()));
       connect(constraintsListWidget, SIGNAL(currentRowChanged(int)), this, SLOT(constraintChanged(int)));
       connect(modifyConstraintPushButton, SIGNAL(clicked()), this, SLOT(modifyConstraint()));
       connect(constraintsListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(modifyConstraint()));
       connect(teachersComboBox, SIGNAL(activated(QString)), this, SLOT(filterChanged()));
       connect(studentsComboBox, SIGNAL(activated(QString)), this, SLOT(filterChanged()));
       connect(subjectsComboBox, SIGNAL(activated(QString)), this, SLOT(filterChanged()));
       connect(activityTagsComboBox, SIGNAL(activated(QString)), this, SLOT(filterChanged()));
       connect(helpPushButton, SIGNAL(clicked()), this, SLOT(help()));

       centerWidgetOnScreen(this);
       restoreFETDialogGeometry(this);

       QSize tmp1=teachersComboBox->minimumSizeHint();
       Q_UNUSED(tmp1);
       QSize tmp2=studentsComboBox->minimumSizeHint();
       Q_UNUSED(tmp2);
       QSize tmp3=subjectsComboBox->minimumSizeHint();
       Q_UNUSED(tmp3);
       QSize tmp4=activityTagsComboBox->minimumSizeHint();
       Q_UNUSED(tmp4);
       
       teachersComboBox->addItem("");
       for(int i=0; i<gt.rules.teachersList.size(); i++){
              Teacher* tch=gt.rules.teachersList[i];
              teachersComboBox->addItem(tch->name);
       }
       teachersComboBox->setCurrentIndex(0);

       subjectsComboBox->addItem("");
       for(int i=0; i<gt.rules.subjectsList.size(); i++){
              Subject* sb=gt.rules.subjectsList[i];
              subjectsComboBox->addItem(sb->name);
       }
       subjectsComboBox->setCurrentIndex(0);

       activityTagsComboBox->addItem("");
       for(int i=0; i<gt.rules.activityTagsList.size(); i++){
              ActivityTag* st=gt.rules.activityTagsList[i];
              activityTagsComboBox->addItem(st->name);
       }
       activityTagsComboBox->setCurrentIndex(0);

       studentsComboBox->addItem("");
       for(int i=0; i<gt.rules.yearsList.size(); i++){
              StudentsYear* sty=gt.rules.yearsList[i];
              studentsComboBox->addItem(sty->name);
              for(int j=0; j<sty->groupsList.size(); j++){
                     StudentsGroup* stg=sty->groupsList[j];
                     studentsComboBox->addItem(stg->name);
                     for(int k=0; k<stg->subgroupsList.size(); k++){
                            StudentsSubgroup* sts=stg->subgroupsList[k];
                            studentsComboBox->addItem(sts->name);
                     }
              }
       }
       studentsComboBox->setCurrentIndex(0);

       this->filterChanged();
}

Here is the call graph for this function:

Definition at line 105 of file constraintactivitiessamestartingtimeform.cpp.

Here is the call graph for this function:


Member Function Documentation

Definition at line 239 of file constraintactivitiessamestartingtimeform.cpp.

{
       AddConstraintActivitiesSameStartingTimeForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();

       this->refreshConstraintsListWidget();
       
       constraintsListWidget->setCurrentRow(constraintsListWidget->count()-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 225 of file constraintactivitiessamestartingtimeform.cpp.

{
       if(index<0){
              currentConstraintTextEdit->setPlainText("");
              return;
       }
       QString s;
       assert(index<this->visibleConstraintsList.size());
       TimeConstraint* ctr=this->visibleConstraintsList.at(index);
       assert(ctr!=NULL);
       s=ctr->getDetailedDescription(gt.rules);
       currentConstraintTextEdit->setPlainText(s);
}

Here is the caller graph for this function:

Definition at line 207 of file constraintactivitiessamestartingtimeform.cpp.

{
       this->visibleConstraintsList.clear();
       constraintsListWidget->clear();
       for(int i=0; i<gt.rules.timeConstraintsList.size(); i++){
              TimeConstraint* ctr=gt.rules.timeConstraintsList[i];
              if(filterOk(ctr)){
                     visibleConstraintsList.append(ctr);
                     constraintsListWidget->addItem(ctr->getDescription(gt.rules));
              }
       }
       
       if(constraintsListWidget->count()>0)
              constraintsListWidget->setCurrentRow(0);
       else
              constraintChanged(-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 132 of file constraintactivitiessamestartingtimeform.cpp.

{
       if(ctr->type!=CONSTRAINT_ACTIVITIES_SAME_STARTING_TIME)
              return false;
              
       ConstraintActivitiesSameStartingTime* c=(ConstraintActivitiesSameStartingTime*) ctr;
       
       QString tn=teachersComboBox->currentText();
       QString sbn=subjectsComboBox->currentText();
       QString sbtn=activityTagsComboBox->currentText();
       QString stn=studentsComboBox->currentText();
       
       if(tn=="" && sbn=="" && sbtn=="" && stn=="")
              return true;
       
       bool foundTeacher=false, foundStudents=false, foundSubject=false, foundActivityTag=false;
              
       for(int i=0; i<c->n_activities; i++){
              //bool found=true;
       
              int id=c->activitiesId[i];
              Activity* act=NULL;
              foreach(Activity* a, gt.rules.activitiesList)
                     if(a->id==id)
                            act=a;
              
              if(act!=NULL){
                     //teacher
                     if(tn!=""){
                            bool ok2=false;
                            for(QStringList::Iterator it=act->teachersNames.begin(); it!=act->teachersNames.end(); it++)
                                   if(*it == tn){
                                          ok2=true;
                                          break;
                                   }
                            if(ok2)
                                   foundTeacher=true;
                     }
                     else
                            foundTeacher=true;

                     //subject
                     if(sbn!="" && sbn!=act->subjectName)
                            ;
                     else
                            foundSubject=true;
              
                     //activity tag
                     if(sbtn!="" && !act->activityTagsNames.contains(sbtn))
                            ;
                     else
                            foundActivityTag=true;
              
                     //students
                     if(stn!=""){
                            bool ok2=false;
                            for(QStringList::Iterator it=act->studentsNames.begin(); it!=act->studentsNames.end(); it++)
                                   if(*it == stn){
                                          ok2=true;
                                          break;
                            }
                            if(ok2)
                                   foundStudents=true;
                     }
                     else
                            foundStudents=true;
              }
       }
       
       if(foundTeacher && foundStudents && foundSubject && foundActivityTag)
              return true;
       else
              return false;
}

Here is the caller graph for this function:

Definition at line 318 of file constraintactivitiessamestartingtimeform.cpp.

{
       QString s;

       s+=tr("IMPORTANT: after adding such constraints, it is necessary (otherwise generation might be impossible) to remove redundant constraints"
       " min days between activities. If you are sure that you don't have redundant constraints, you can skip this step, but it doesn't hurt to do it as a precaution."
       " Also, you don't have to do that after each added constraint, but only once after adding more constraints of this type."
       " Please read Help/Important tips - tip number 2 for details");

       LongTextMessageBox::largeInformation(this, tr("FET help"), s);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 250 of file constraintactivitiessamestartingtimeform.cpp.

{
       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);

       ModifyConstraintActivitiesSameStartingTimeForm form(this, (ConstraintActivitiesSameStartingTime*)ctr);
       setParentAndOtherThings(&form, this);
       form.exec();

       refreshConstraintsListWidget();
       
       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);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 110 of file constraintactivitiessamestartingtimeform.cpp.

{
       this->visibleConstraintsList.clear();
       constraintsListWidget->clear();
       for(int i=0; i<gt.rules.timeConstraintsList.size(); i++){
              TimeConstraint* ctr=gt.rules.timeConstraintsList[i];
              if(filterOk(ctr)){
                     QString s;
                     s=ctr->getDescription(gt.rules);
                     visibleConstraintsList.append(ctr);
                     constraintsListWidget->addItem(s);
              }
       }

       if(constraintsListWidget->count()>0){
              constraintsListWidget->setCurrentRow(0);
              constraintChanged(constraintsListWidget->currentRow());
       }
       else
              constraintChanged(-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 280 of file constraintactivitiessamestartingtimeform.cpp.

{
       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);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 29 of file constraintactivitiessamestartingtimeform.h.


The documentation for this class was generated from the following files: