Back to index

fet  5.18.0
Public Slots | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
FetMainForm Class Reference

#include <fetmainform.h>

List of all members.

Public Slots

void enableNotPerfectMessage ()
void on_fileNewAction_activated ()
void on_fileSaveAction_activated ()
void on_fileSaveAsAction_activated ()
void on_fileExitAction_activated ()
void on_fileOpenAction_activated ()
void on_fileClearRecentFilesListAction_activated ()
void openRecentFile ()
void on_fileImportCSVActivityTagsAction_activated ()
void on_fileImportCSVActivitiesAction_activated ()
void on_fileImportCSVRoomsBuildingsAction_activated ()
void on_fileImportCSVSubjectsAction_activated ()
void on_fileImportCSVTeachersAction_activated ()
void on_fileImportCSVYearsGroupsSubgroupsAction_activated ()
void on_fileExportCSVAction_activated ()
void on_dataInstitutionNameAction_activated ()
void on_dataCommentsAction_activated ()
void on_dataDaysAction_activated ()
void on_dataHoursAction_activated ()
void on_dataTeachersAction_activated ()
void on_dataTeachersStatisticsAction_activated ()
void on_dataSubjectsAction_activated ()
void on_dataSubjectsStatisticsAction_activated ()
void on_dataActivityTagsAction_activated ()
void on_dataYearsAction_activated ()
void on_dataGroupsAction_activated ()
void on_dataSubgroupsAction_activated ()
void on_dataStudentsStatisticsAction_activated ()
void on_dataActivitiesRoomsStatisticsAction_activated ()
void on_dataHelpOnStatisticsAction_activated ()
void on_helpSettingsAction_activated ()
void on_settingsUseColorsAction_toggled ()
void on_settingsShowShortcutsOnMainWindowAction_toggled ()
void on_settingsConfirmActivityPlanningAction_toggled ()
void on_settingsConfirmSpreadActivitiesAction_toggled ()
void on_settingsConfirmRemoveRedundantAction_toggled ()
void on_settingsConfirmSaveTimetableAction_toggled ()
void enableActivityTagMaxHoursDailyToggled (bool checked)
void enableStudentsMaxGapsPerDayToggled (bool checked)
void showWarningForNotPerfectConstraintsToggled (bool checked)
void enableStudentsMinHoursDailyWithAllowEmptyDaysToggled (bool checked)
void showWarningForStudentsMinHoursDailyWithAllowEmptyDaysToggled (bool checked)
void on_dataActivitiesAction_activated ()
void on_dataSubactivitiesAction_activated ()
void on_dataRoomsAction_activated ()
void on_dataBuildingsAction_activated ()
void on_dataAllTimeConstraintsAction_activated ()
void on_dataAllSpaceConstraintsAction_activated ()
void on_dataSpaceConstraintsRoomNotAvailableTimesAction_activated ()
void on_dataSpaceConstraintsBasicCompulsorySpaceAction_activated ()
void on_dataSpaceConstraintsActivityPreferredRoomAction_activated ()
void on_dataSpaceConstraintsActivityPreferredRoomsAction_activated ()
void on_dataSpaceConstraintsStudentsSetHomeRoomAction_activated ()
void on_dataSpaceConstraintsStudentsSetHomeRoomsAction_activated ()
void on_dataSpaceConstraintsTeacherHomeRoomAction_activated ()
void on_dataSpaceConstraintsTeacherHomeRoomsAction_activated ()
void on_dataSpaceConstraintsStudentsSetMaxBuildingChangesPerDayAction_activated ()
void on_dataSpaceConstraintsStudentsMaxBuildingChangesPerDayAction_activated ()
void on_dataSpaceConstraintsStudentsSetMaxBuildingChangesPerWeekAction_activated ()
void on_dataSpaceConstraintsStudentsMaxBuildingChangesPerWeekAction_activated ()
void on_dataSpaceConstraintsStudentsSetMinGapsBetweenBuildingChangesAction_activated ()
void on_dataSpaceConstraintsStudentsMinGapsBetweenBuildingChangesAction_activated ()
void on_dataSpaceConstraintsTeacherMaxBuildingChangesPerDayAction_activated ()
void on_dataSpaceConstraintsTeachersMaxBuildingChangesPerDayAction_activated ()
void on_dataSpaceConstraintsTeacherMaxBuildingChangesPerWeekAction_activated ()
void on_dataSpaceConstraintsTeachersMaxBuildingChangesPerWeekAction_activated ()
void on_dataSpaceConstraintsTeacherMinGapsBetweenBuildingChangesAction_activated ()
void on_dataSpaceConstraintsTeachersMinGapsBetweenBuildingChangesAction_activated ()
void on_dataSpaceConstraintsSubjectPreferredRoomAction_activated ()
void on_dataSpaceConstraintsSubjectPreferredRoomsAction_activated ()
void on_dataSpaceConstraintsSubjectActivityTagPreferredRoomAction_activated ()
void on_dataSpaceConstraintsSubjectActivityTagPreferredRoomsAction_activated ()
void on_dataSpaceConstraintsActivityTagPreferredRoomAction_activated ()
 added 6 apr 2009
void on_dataSpaceConstraintsActivityTagPreferredRoomsAction_activated ()
void on_dataSpaceConstraintsActivitiesOccupyMaxDifferentRoomsAction_activated ()
void on_dataTimeConstraintsBasicCompulsoryTimeAction_activated ()
void on_dataTimeConstraintsBreakTimesAction_activated ()
void on_dataTimeConstraintsTwoActivitiesConsecutiveAction_activated ()
void on_dataTimeConstraintsTwoActivitiesGroupedAction_activated ()
void on_dataTimeConstraintsThreeActivitiesGroupedAction_activated ()
void on_dataTimeConstraintsTwoActivitiesOrderedAction_activated ()
void on_dataTimeConstraintsActivityPreferredStartingTimeAction_activated ()
void on_dataTimeConstraintsActivityPreferredTimeSlotsAction_activated ()
void on_dataTimeConstraintsActivitiesPreferredTimeSlotsAction_activated ()
void on_dataTimeConstraintsSubactivitiesPreferredTimeSlotsAction_activated ()
void on_dataTimeConstraintsActivityPreferredStartingTimesAction_activated ()
void on_dataTimeConstraintsActivitiesPreferredStartingTimesAction_activated ()
void on_dataTimeConstraintsSubactivitiesPreferredStartingTimesAction_activated ()
void on_dataTimeConstraintsActivitiesSameStartingTimeAction_activated ()
void on_dataTimeConstraintsActivitiesSameStartingHourAction_activated ()
void on_dataTimeConstraintsActivitiesSameStartingDayAction_activated ()
void on_dataTimeConstraintsActivitiesOccupyMaxTimeSlotsFromSelectionAction_activated ()
void on_dataTimeConstraintsActivitiesMaxSimultaneousInSelectedTimeSlotsAction_activated ()
void on_dataTimeConstraintsActivitiesNotOverlappingAction_activated ()
void on_dataTimeConstraintsMinDaysBetweenActivitiesAction_activated ()
void on_dataTimeConstraintsMaxDaysBetweenActivitiesAction_activated ()
void on_dataTimeConstraintsMinGapsBetweenActivitiesAction_activated ()
void on_dataTimeConstraintsActivityEndsStudentsDayAction_activated ()
void on_dataTimeConstraintsActivitiesEndStudentsDayAction_activated ()
void on_dataTimeConstraintsTeacherNotAvailableTimesAction_activated ()
void on_dataTimeConstraintsTeacherMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsTeachersMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsTeacherMinDaysPerWeekAction_activated ()
void on_dataTimeConstraintsTeachersMinDaysPerWeekAction_activated ()
void on_dataTimeConstraintsTeachersMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsTeacherMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsTeachersMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsTeacherMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsTeachersActivityTagMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsTeacherActivityTagMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsTeachersActivityTagMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsTeacherActivityTagMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsTeachersMinHoursDailyAction_activated ()
void on_dataTimeConstraintsTeacherMinHoursDailyAction_activated ()
void on_dataTimeConstraintsTeachersMaxGapsPerWeekAction_activated ()
void on_dataTimeConstraintsTeacherMaxGapsPerWeekAction_activated ()
void on_dataTimeConstraintsTeachersMaxGapsPerDayAction_activated ()
void on_dataTimeConstraintsTeacherMaxGapsPerDayAction_activated ()
void on_dataTimeConstraintsTeacherIntervalMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsTeachersIntervalMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsStudentsSetIntervalMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsStudentsIntervalMaxDaysPerWeekAction_activated ()
void on_dataTimeConstraintsStudentsSetNotAvailableTimesAction_activated ()
void on_dataTimeConstraintsStudentsSetMaxGapsPerWeekAction_activated ()
void on_dataTimeConstraintsStudentsMaxGapsPerWeekAction_activated ()
void on_dataTimeConstraintsStudentsSetMaxGapsPerDayAction_activated ()
void on_dataTimeConstraintsStudentsMaxGapsPerDayAction_activated ()
void on_dataTimeConstraintsStudentsEarlyMaxBeginningsAtSecondHourAction_activated ()
void on_dataTimeConstraintsStudentsSetEarlyMaxBeginningsAtSecondHourAction_activated ()
void on_dataTimeConstraintsStudentsMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsStudentsSetMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsStudentsMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsStudentsSetMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsStudentsActivityTagMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsStudentsSetActivityTagMaxHoursContinuouslyAction_activated ()
void on_dataTimeConstraintsStudentsActivityTagMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsStudentsSetActivityTagMaxHoursDailyAction_activated ()
void on_dataTimeConstraintsStudentsMinHoursDailyAction_activated ()
void on_dataTimeConstraintsStudentsSetMinHoursDailyAction_activated ()
void on_activityPlanningAction_activated ()
void on_spreadActivitiesAction_activated ()
void on_removeRedundantConstraintsAction_activated ()
void on_helpAboutAction_activated ()
void on_helpFAQAction_activated ()
void on_helpTipsAction_activated ()
void on_helpInstructionsAction_activated ()
void on_helpHomepageAction_activated ()
void on_helpContentsAction_activated ()
void on_helpForumAction_activated ()
void on_helpAddressesAction_activated ()
void on_timetableGenerateAction_activated ()
void on_timetableViewStudentsAction_activated ()
void on_timetableViewTeachersAction_activated ()
void on_timetableViewRoomsAction_activated ()
void on_timetableShowConflictsAction_activated ()
void on_timetablePrintAction_activated ()
void on_timetableGenerateMultipleAction_activated ()
void on_timetableLockAllActivitiesAction_activated ()
void on_timetableUnlockAllActivitiesAction_activated ()
void on_timetableLockActivitiesDayAction_activated ()
void on_timetableUnlockActivitiesDayAction_activated ()
void on_timetableLockActivitiesEndStudentsDayAction_activated ()
void on_timetableUnlockActivitiesEndStudentsDayAction_activated ()
void on_timetableSaveTimetableAsAction_activated ()
void on_randomSeedAction_activated ()
void on_languageAction_activated ()
void on_checkForUpdatesAction_toggled ()
void on_timetablesDivideByDaysAction_toggled ()
void on_settingsRestoreDefaultsAction_activated ()
void on_settingsTimetableHtmlLevelAction_activated ()
void on_settingsPrintNotAvailableSlotsAction_toggled ()
void on_settingsPrintBreakSlotsAction_toggled ()
void on_settingsPrintActivitiesWithSameStartingTimeAction_toggled ()
void on_selectOutputDirAction_activated ()
void on_statisticsExportToDiskAction_activated ()
void on_shortcutAllTimeConstraintsPushButton_clicked ()
void on_shortcutBreakTimeConstraintsPushButton_clicked ()
void on_shortcutTeachersTimeConstraintsPushButton_clicked ()
void on_shortcutStudentsTimeConstraintsPushButton_clicked ()
void on_shortcutActivitiesTimeConstraintsPushButton_clicked ()
void on_shortcutAdvancedTimeConstraintsPushButton_clicked ()
void on_shortcutAllSpaceConstraintsPushButton_clicked ()
void on_shortcutRoomsSpaceConstraintsPushButton_clicked ()
void on_shortcutTeachersSpaceConstraintsPushButton_clicked ()
void on_shortcutStudentsSpaceConstraintsPushButton_clicked ()
void on_shortcutSubjectsSpaceConstraintsPushButton_clicked ()
void on_shortcutActivityTagsSpaceConstraintsPushButton_clicked ()
void on_shortcutSubjectsAndActivityTagsSpaceConstraintsPushButton_clicked ()
void on_shortcutActivitiesSpaceConstraintsPushButton_clicked ()
void on_shortcutGeneratePushButton_clicked ()
void on_shortcutGenerateMultiplePushButton_clicked ()
void on_shortcutViewTeachersPushButton_clicked ()
void on_shortcutViewStudentsPushButton_clicked ()
void on_shortcutViewRoomsPushButton_clicked ()
void on_shortcutShowSoftConflictsPushButton_clicked ()
void on_shortcutBasicPushButton_clicked ()
void on_shortcutSubjectsPushButton_clicked ()
void on_shortcutActivityTagsPushButton_clicked ()
void on_shortcutTeachersPushButton_clicked ()
void on_shortcutStudentsPushButton_clicked ()
void on_shortcutActivitiesPushButton_clicked ()
void on_shortcutSubactivitiesPushButton_clicked ()
void on_shortcutDataAdvancedPushButton_clicked ()
void on_shortcutDataSpacePushButton_clicked ()
void on_shortcutOpenPushButton_clicked ()
void on_shortcutOpenRecentPushButton_clicked ()
void on_shortcutNewPushButton_clicked ()
void on_shortcutSavePushButton_clicked ()
void on_shortcutSaveAsPushButton_clicked ()
void replyFinished (QNetworkReply *networkReply)

Public Member Functions

 FetMainForm ()
 ~FetMainForm ()
void closeOtherWindows ()
void openFile (const QString &fileName)
bool fileSave ()
bool fileSaveAs ()

Protected Member Functions

void closeEvent (QCloseEvent *event)

Private Member Functions

void setEnabledIcon (QAction *action, bool enabled)
void setCurrentFile (const QString &fileName)
QString strippedName (const QString &fullFileName)
void updateRecentFileActions ()

Private Attributes

QSpinBox communicationSpinBox
QMenu * shortcutBasicMenu
QMenu * shortcutDataSpaceMenu
QMenu * shortcutDataAdvancedMenu
QMenu * shortcutAdvancedTimeMenu
QNetworkAccessManager * networkManager
QStringList recentFiles
QAction * recentFileActions [MAX_RECENT_FILES]
QAction * recentSeparatorAction

Detailed Description

Definition at line 71 of file fetmainform.h.


Constructor & Destructor Documentation

Definition at line 399 of file fetmainform.cpp.

{
       setupUi(this);

       QSettings settings(COMPANY, PROGRAM);
       int nRec=settings.value(QString("FetMainForm/number-of-recent-files"), 0).toInt();
       if(nRec>MAX_RECENT_FILES)
              nRec=MAX_RECENT_FILES;
       recentFiles.clear();
       for(int i=0; i<nRec; i++)
              if(settings.contains(QString("FetMainForm/recent-file/")+CustomFETString::number(i+1)))
                     recentFiles.append(settings.value(QString("FetMainForm/recent-file/")+CustomFETString::number(i+1)).toString());
       
       recentSeparatorAction=fileOpenRecentMenu->insertSeparator(fileClearRecentFilesListAction);
       for(int i=0; i<MAX_RECENT_FILES; i++){
              recentFileActions[i]=new QAction(this);
              recentFileActions[i]->setVisible(false);
              connect(recentFileActions[i], SIGNAL(triggered()), this, SLOT(openRecentFile()));
              
              fileOpenRecentMenu->insertAction(recentSeparatorAction, recentFileActions[i]);
       }
       
       updateRecentFileActions();
       
       //statusBar()->showMessage(tr("FET started", "This is a message written in the status bar, saying that FET was started"), STATUS_BAR_MILLISECONDS);
       statusBar()->showMessage("", STATUS_BAR_MILLISECONDS); //to get the correct centralWidget for the logo, so we need status bar existing.
       
       INPUT_FILENAME_XML=QString("");
       setCurrentFile(INPUT_FILENAME_XML);

       //toolBox->setCurrentIndex(0);
       tabWidget->setVisible(SHOW_SHORTCUTS_ON_MAIN_WINDOW);
       tabWidget->setCurrentIndex(MAIN_FORM_SHORTCUTS_TAB_POSITION);
       
       shortcutBasicMenu=new QMenu();
       shortcutBasicMenu->addMenu(menuInstitution_information);
       shortcutBasicMenu->addSeparator(); //added on 19 Dec. 2009
       shortcutBasicMenu->addMenu(menuDays_and_hours);
       
       shortcutAdvancedTimeMenu=new QMenu();
       shortcutAdvancedTimeMenu->addAction(spreadActivitiesAction);
       shortcutAdvancedTimeMenu->addSeparator();
       shortcutAdvancedTimeMenu->addAction(removeRedundantConstraintsAction);
       
       shortcutDataSpaceMenu=new QMenu();
       shortcutDataSpaceMenu->addAction(dataBuildingsAction);
       shortcutDataSpaceMenu->addSeparator();
       shortcutDataSpaceMenu->addAction(dataRoomsAction);
       
       shortcutDataAdvancedMenu=new QMenu();
       shortcutDataAdvancedMenu->addAction(activityPlanningAction);
       shortcutDataAdvancedMenu->addSeparator();
       shortcutDataAdvancedMenu->addAction(dataTeachersStatisticsAction);
       shortcutDataAdvancedMenu->addAction(dataSubjectsStatisticsAction);
       shortcutDataAdvancedMenu->addAction(dataStudentsStatisticsAction);
       shortcutDataAdvancedMenu->addSeparator();
       shortcutDataAdvancedMenu->addAction(dataActivitiesRoomsStatisticsAction);
       
       ORIGINAL_WIDTH=width();
       ORIGINAL_HEIGHT=height();
       //ORIGINAL_X=x();
       //ORIGINAL_Y=y();
       
       QRect rect=mainFormSettingsRect;
       if(!rect.isValid()){
              forceCenterWidgetOnScreen(this);
       }
       else{
              //this->setWindowFlags(this->windowFlags() | Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMinMaxButtonsHint);
              
              /*resize(rect.size());
              move(rect.topLeft());*/
              this->setGeometry(rect);
       }

       //new data
       if(gt.rules.initialized)
              gt.rules.kill();
       gt.rules.init();

       gt.rules.modified=true; //to avoid flicker of the main form modified flag

       bool tmp=gt.rules.addTimeConstraint(new ConstraintBasicCompulsoryTime(100));
       assert(tmp);
       tmp=gt.rules.addSpaceConstraint(new ConstraintBasicCompulsorySpace(100));
       assert(tmp);

       gt.rules.modified=true; //force update of the modified flag of the main window
       setRulesUnmodifiedAndOtherThings(&gt.rules);

       students_schedule_ready=false;
       teachers_schedule_ready=false;
       rooms_schedule_ready=false;
       
       settingsShowShortcutsOnMainWindowAction->setCheckable(true);
       settingsShowShortcutsOnMainWindowAction->setChecked(SHOW_SHORTCUTS_ON_MAIN_WINDOW);
       
       checkForUpdatesAction->setCheckable(true);
       checkForUpdatesAction->setChecked(checkForUpdates);
       
       settingsUseColorsAction->setCheckable(true);
       settingsUseColorsAction->setChecked(USE_GUI_COLORS);
       
       settingsConfirmActivityPlanningAction->setCheckable(true);
       settingsConfirmActivityPlanningAction->setChecked(CONFIRM_ACTIVITY_PLANNING);
       
       settingsConfirmSpreadActivitiesAction->setCheckable(true);
       settingsConfirmSpreadActivitiesAction->setChecked(CONFIRM_SPREAD_ACTIVITIES);
       
       settingsConfirmRemoveRedundantAction->setCheckable(true);
       settingsConfirmRemoveRedundantAction->setChecked(CONFIRM_REMOVE_REDUNDANT);
       
       settingsConfirmSaveTimetableAction->setCheckable(true);
       settingsConfirmSaveTimetableAction->setChecked(CONFIRM_SAVE_TIMETABLE);
       
       timetablesDivideByDaysAction->setCheckable(true);
       timetablesDivideByDaysAction->setChecked(DIVIDE_HTML_TIMETABLES_WITH_TIME_AXIS_BY_DAYS);
       
       if(checkForUpdates){
              networkManager=new QNetworkAccessManager(this);
              connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
              QUrl url("http://lalescu.ro/liviu/fet/crtversion/crtversion.txt");
              cout<<"New version checking host: "<<qPrintable(url.host())<<endl;
              cout<<"New version checking path: "<<qPrintable(url.path())<<endl;
              networkManager->get(QNetworkRequest(url));
       }
       
       settingsPrintNotAvailableSlotsAction->setCheckable(true);
       settingsPrintNotAvailableSlotsAction->setChecked(PRINT_NOT_AVAILABLE_TIME_SLOTS);

       settingsPrintBreakSlotsAction->setCheckable(true);
       settingsPrintBreakSlotsAction->setChecked(PRINT_BREAK_TIME_SLOTS);

       settingsPrintActivitiesWithSameStartingTimeAction->setCheckable(true);
       settingsPrintActivitiesWithSameStartingTimeAction->setChecked(PRINT_ACTIVITIES_WITH_SAME_STARTING_TIME);

       //needed to sync the view table forms
       LockUnlock::computeLockedUnlockedActivitiesTimeSpace();
       LockUnlock::increaseCommunicationSpinBox();
       
       enableActivityTagMaxHoursDailyAction->setChecked(ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       enableStudentsMaxGapsPerDayAction->setChecked(ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
       showWarningForNotPerfectConstraintsAction->setChecked(SHOW_WARNING_FOR_NOT_PERFECT_CONSTRAINTS);

       enableStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(ENABLE_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS);
       showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(SHOW_WARNING_FOR_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS);
       
       connect(enableActivityTagMaxHoursDailyAction, SIGNAL(toggled(bool)), this, SLOT(enableActivityTagMaxHoursDailyToggled(bool)));
       connect(enableStudentsMaxGapsPerDayAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMaxGapsPerDayToggled(bool)));
       connect(showWarningForNotPerfectConstraintsAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForNotPerfectConstraintsToggled(bool)));

       connect(enableStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));
       connect(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));

       dataTimeConstraintsTeacherActivityTagMaxHoursDailyAction->setIconVisibleInMenu(true);
       dataTimeConstraintsTeachersActivityTagMaxHoursDailyAction->setIconVisibleInMenu(true);
       dataTimeConstraintsStudentsActivityTagMaxHoursDailyAction->setIconVisibleInMenu(true);
       dataTimeConstraintsStudentsSetActivityTagMaxHoursDailyAction->setIconVisibleInMenu(true);

       dataTimeConstraintsStudentsSetMaxGapsPerDayAction->setIconVisibleInMenu(true);
       dataTimeConstraintsStudentsMaxGapsPerDayAction->setIconVisibleInMenu(true);

       setEnabledIcon(dataTimeConstraintsTeacherActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsTeachersActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsSetActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);

       setEnabledIcon(dataTimeConstraintsStudentsSetMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
       setEnabledIcon(dataTimeConstraintsStudentsMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
}

Here is the call graph for this function:

Definition at line 752 of file fetmainform.cpp.

{
       QSettings settings(COMPANY, PROGRAM);
       settings.setValue(QString("FetMainForm/number-of-recent-files"), recentFiles.count());
       settings.remove(QString("FetMainForm/recent-file"));
       for(int i=0; i<recentFiles.count(); i++)
              settings.setValue(QString("FetMainForm/recent-file/")+CustomFETString::number(i+1), recentFiles.at(i));

       shortcutBasicMenu->clear();
       delete shortcutBasicMenu;

       shortcutAdvancedTimeMenu->clear();
       delete shortcutAdvancedTimeMenu;

       shortcutDataSpaceMenu->clear();
       delete shortcutDataSpaceMenu;

       shortcutDataAdvancedMenu->clear();
       delete shortcutDataAdvancedMenu;
}

Here is the call graph for this function:


Member Function Documentation

void FetMainForm::closeEvent ( QCloseEvent *  event) [protected]

Definition at line 715 of file fetmainform.cpp.

{
       //QRect rect(x(), y(), width(), height());
       QRect rect=this->geometry();
       mainFormSettingsRect=rect;
       
       MAIN_FORM_SHORTCUTS_TAB_POSITION=tabWidget->currentIndex();
       
       if(gt.rules.modified){
              QMessageBox::StandardButton res=QMessageBox::question( this, tr("FET - exiting"),
               tr("Your data file has been modified - do you want to save it?"), QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);

              if(res==QMessageBox::Yes){
                     bool t=this->fileSave();
                     if(!t){
                            event->ignore();
                     }
                     else{
                            closeOtherWindows();
                            event->accept();
                     }
              }
              else if(res==QMessageBox::No){
                     closeOtherWindows();
                     event->accept();
              }
              else{
                     assert(res==QMessageBox::Cancel);
                     event->ignore();
              }
       }
       else{
              closeOtherWindows();
              event->accept();
       }
}

Here is the call graph for this function:

Definition at line 706 of file fetmainform.cpp.

{
       QList<QWidget*> tlwl=qApp->topLevelWidgets();
       
       foreach(QWidget* wi, tlwl)
              if(wi->isVisible() && wi!=this)
                     wi->close();
}

Here is the caller graph for this function:

Definition at line 3838 of file fetmainform.cpp.

{
       if(checked==true){
              QString s=tr("These kinds of constraints are good, but not perfectly optimized. Adding such constraints may make your"
               " timetable solve too slow or even impossible.");
              s+=" ";
              s+=tr("It is recommended to use such constraints only at the end, after you generated successfully with all the other constraints.");
              s+="\n\n";
              s+=tr("If your timetable is too difficult, it may be from these kinds of constraints, so you may need to remove them and retry.");
              s+="\n\n";
              s+=tr("Continue only if you know what you are doing.");
       
              QMessageBox::StandardButton b=QMessageBox::warning(this, tr("FET warning"), s, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
       
              if(b!=QMessageBox::Ok){
                     disconnect(enableActivityTagMaxHoursDailyAction, SIGNAL(toggled(bool)), this, SLOT(enableActivityTagMaxHoursDailyToggled(bool)));
                     enableActivityTagMaxHoursDailyAction->setChecked(false);
                     connect(enableActivityTagMaxHoursDailyAction, SIGNAL(toggled(bool)), this, SLOT(enableActivityTagMaxHoursDailyToggled(bool)));
                     return;
              }
       }
       
       ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY=checked;

       setEnabledIcon(dataTimeConstraintsTeacherActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsTeachersActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsSetActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 584 of file fetmainform.cpp.

{
       QString s=tr("Constraint is not enabled. To use this type of constraint you must enable it from the Settings->Advanced menu.");
       s+="\n\n";
       s+=tr("Explanation:");
       s+=" ";
       s+=tr("Constraints of this type are good, working, but they are not perfectly optimized.");
       s+=" ";
       s+=tr("For some situations, the generation of the timetable may take too long or be impossible.");
       s+="\n\n";
       s+=tr("Use with caution.");

       QMessageBox::information(this, tr("FET information"), s);
}

Here is the caller graph for this function:

void FetMainForm::enableStudentsMaxGapsPerDayToggled ( bool  checked) [slot]

Definition at line 3868 of file fetmainform.cpp.

{
       if(checked==true){
              QString s=tr("These kinds of constraints are good, but not perfectly optimized. Adding such constraints may make your"
               " timetable solve too slow or even impossible.");
              s+=" ";
              s+=tr("It is recommended to use such constraints only at the end, after you generated successfully with all the other constraints.");
              s+="\n\n";
              s+=tr("If your timetable is too difficult, it may be from these kinds of constraints, so you may need to remove them and retry.");
              s+="\n\n";
              s+=tr("Continue only if you know what you are doing.");
       
              QMessageBox::StandardButton b=QMessageBox::warning(this, tr("FET warning"), s, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
       
              if(b!=QMessageBox::Ok){
                     disconnect(enableStudentsMaxGapsPerDayAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMaxGapsPerDayToggled(bool)));
                     enableStudentsMaxGapsPerDayAction->setChecked(false);
                     connect(enableStudentsMaxGapsPerDayAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMaxGapsPerDayToggled(bool)));
                     return;
              }
       }
       
       ENABLE_STUDENTS_MAX_GAPS_PER_DAY=checked;
       
       setEnabledIcon(dataTimeConstraintsStudentsSetMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
       setEnabledIcon(dataTimeConstraintsStudentsMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3919 of file fetmainform.cpp.

{
       if(checked==true){
              QString s=tr("This kind of constraint is good, but only in the right case. Adding such constraints in the wrong circumstance may make your"
               " timetable solve too slow or even impossible.");
              s+="\n\n";
              s+=tr("Please use such constraints only if you are sure that there exists a timetable with empty days for students. If your instution requires"
                     " each day for the students to be not empty, or if there does not exist a solution with empty days for students, "
                     "it is IMPERATIVE (for performance reasons) that you use the standard constraint which does not allow empty days."
                     " Otherwise, the timetable may be impossible to find.");
              s+="\n\n";
              s+=tr("Continue only if you know what you are doing.");
       
              QMessageBox::StandardButton b=QMessageBox::warning(this, tr("FET warning"), s, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
       
              if(b!=QMessageBox::Ok){
                     disconnect(enableStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));
                     enableStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(false);
                     connect(enableStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(enableStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));
                     return;
              }
       }
       
       ENABLE_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS=checked;
}

Here is the caller graph for this function:

Definition at line 1400 of file fetmainform.cpp.

{
       if(INPUT_FILENAME_XML.isEmpty())
              return fileSaveAs();
       else{
              gt.rules.write(this, INPUT_FILENAME_XML);

              gt.rules.modified=true; //force update of the modified flag of the main window
              setRulesUnmodifiedAndOtherThings(&gt.rules);
              
              setCurrentFile(INPUT_FILENAME_XML);

              statusBar()->showMessage(tr("File saved"), STATUS_BAR_MILLISECONDS);
              return true;
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1031 of file fetmainform.cpp.

{
       QString predefFileName=INPUT_FILENAME_XML;
       if(predefFileName.isEmpty())
              predefFileName=WORKING_DIRECTORY+FILE_SEP+QString("untitled.fet");

       QString s = QFileDialog::getSaveFileName(this, tr("Choose a filename to save under"),
              predefFileName, tr("FET XML files", "Instructions for translators: FET XML is a type of file format (using text mode). "
              "So this field means files in the FET XML format")+" (*.fet)"+";;"+tr("All files")+" (*)",
              0, QFileDialog::DontConfirmOverwrite);
       if(s==QString())
              return false;

       int tmp2=s.lastIndexOf(FILE_SEP);
       QString s2=s.right(s.length()-tmp2-1);
                     
       if(s2.indexOf("\"") >= 0){
              QMessageBox::warning(this, tr("FET information"), tr("Please do not use quotation marks \" in filename, the html css code does not work"));
              return false;
       }
       if(s2.indexOf(";") >= 0){
              QMessageBox::warning(this, tr("FET information"), tr("Please do not use semicolon ; in filename, the html css code does not work"));
              return false;
       }
       if(s2.indexOf("#") >= 0){
              QMessageBox::warning(this, tr("FET information"), tr("Please do not use # in filename, the html css code does not work"));
              return false;
       }
       
       if(s.right(4)!=".fet")
              s+=".fet";

       int tmp=s.lastIndexOf(FILE_SEP);
       WORKING_DIRECTORY=s.left(tmp);

       if(QFile::exists(s))
              if(QMessageBox::warning( this, tr("FET"),
               tr("File %1 exists - are you sure you want to overwrite it?").arg(s),
               QMessageBox::Yes|QMessageBox::No) == QMessageBox::No)
                     return false;
                     
       INPUT_FILENAME_XML = s;
       gt.rules.write(this, INPUT_FILENAME_XML);
       
       gt.rules.modified=true; //force update of the modified flag of the main window
       setRulesUnmodifiedAndOtherThings(&gt.rules);
       
       setCurrentFile(INPUT_FILENAME_XML);
       
       statusBar()->showMessage(tr("File saved"), STATUS_BAR_MILLISECONDS);
       
       return true;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3645 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(CONFIRM_ACTIVITY_PLANNING){
              int confirm;
       
              ActivityPlanningConfirmationForm c_form(this);
              setParentAndOtherThings(&c_form, this);
              confirm=c_form.exec();

              if(confirm==QDialog::Accepted){
                     if(c_form.dontShowAgain)
                            settingsConfirmActivityPlanningAction->setChecked(false);
              
                     StartActivityPlanning::startActivityPlanning(&c_form);
              }
       }
       else{
              StartActivityPlanning::startActivityPlanning(this);
       }
}

Here is the call graph for this function:

Definition at line 599 of file fetmainform.cpp.

{
       checkForUpdates=checkForUpdatesAction->isChecked();
}

Definition at line 1695 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ActivitiesForm form(this, "", "", "", "");
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1573 of file fetmainform.cpp.

{
       ActivitiesRoomsStatisticsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1514 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ActivityTagsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1760 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       AllSpaceConstraintsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1747 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       AllTimeConstraintsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1734 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       BuildingsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1435 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       CommentsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1448 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       DaysForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1540 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       GroupsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1648 of file fetmainform.cpp.

{
       QString s;
       
       s+=tr("You will find in the statistics only active activities count. The inactive ones are not counted.");
       
       s+="\n\n";
       
       s+=tr("Statistics for students might be the most difficult to understand."
        " If you are using divisions of years: probably the most relevant statistics"
        " are the ones for each subgroup (so you may check only subgroups check box)."
        " You may see more hours for the years or groups, but these are not significant, please ignore them,"
        " because each year or group will count also activities of all contained subgroups."
        "\n\n"
        "Each subgroup should have a number of hours per week close to the average of"
        " all subgroups and close to the normal number of working hours of each students set."
        " If a subgroup has a much lower value, maybe you used incorrectly"
        " the years/groups/subgroups for activities."
        "\n\n"
        "Please read FAQ for detailed description"
        " on how divisions work. The key is that the subgroups are independent and represent the smallest unit of students."
        " Each subgroup receives the activities of the parent year and parent group and of itself."
        "\n\n"
        "Having a subgroup with too little working hours per week means that you inputted activities in a wrong manner,"
        " and also that some constraints like no gaps, early or min hours daily for this subgroup"
        " are interpreted in a wrong manner (if subgroup has only 2 activities, then these must"
        " be placed in the first hours, which is too hard and wrong)."
        );
       
       s+="\n\n";
       s+=tr("Students' statistics form contains a check box named '%1'"
        ". This has effect only if you have overlapping groups/years, and means that FET will show the complete tree structure"
        ", even if that means that some subgroups/groups will appear twice or more in the table, with the same information."
        " For instance, if you have year Y1, groups G1 and G2, subgroups S1, S2, S3, with structure: Y1 (G1 (S1, S2), G2 (S1, S3)),"
        " S1 will appear twice in the table").arg(tr("Show duplicates"));

       s+="\n\n";
       s+=tr("Activities rooms statistics: this menu will show the activities which may be scheduled in an unspecified room,"
        " if they are referred to by space constraints with weight under 100.0%, and the activities which will certainly be scheduled in an"
        " unspecified room, if they are not referred to by any space constraints. Remember that home rooms constraints are effective only"
        " on activities which have only the exact specified teacher or students set (activities with more teachers or students"
        " sets are not affected by home rooms constraints, you need to have preferred rooms constraints for such activities to ensure"
        " they will not end up in an unspecified room).");
       
       LongTextMessageBox::largeInformation(this, tr("FET - information about statistics"), s);
}

Here is the call graph for this function:

Definition at line 1461 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       HoursForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1422 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       InstitutionNameForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1721 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       RoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2976 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesOccupyMaxDifferentRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2020 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityPreferredRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2033 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityPreferredRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

added 6 apr 2009

Definition at line 2099 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityTagPreferredRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2112 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityTagPreferredRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1994 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintBasicCompulsorySpaceForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2007 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintRoomNotAvailableTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2166 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMaxBuildingChangesPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2192 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMaxBuildingChangesPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2218 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMinGapsBetweenBuildingChangesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2126 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetHomeRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2139 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetHomeRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2153 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMaxBuildingChangesPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2179 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMaxBuildingChangesPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2205 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMinGapsBetweenBuildingChangesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2072 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubjectActivityTagPreferredRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2085 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubjectActivityTagPreferredRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2046 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubjectPreferredRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2059 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubjectPreferredRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2308 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherHomeRoomForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2321 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherHomeRoomsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2231 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxBuildingChangesPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2256 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxBuildingChangesPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2282 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMinGapsBetweenBuildingChangesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2243 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxBuildingChangesPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2269 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxBuildingChangesPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2295 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMinGapsBetweenBuildingChangesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1566 of file fetmainform.cpp.

{
       StudentsStatisticsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1708 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       SubactivitiesForm form(this, "", "", "", "");
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1553 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       SubgroupsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1494 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       SubjectsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1507 of file fetmainform.cpp.

{
       SubjectsStatisticsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1474 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       TeachersForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1487 of file fetmainform.cpp.

{
       TeachersStatisticsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1890 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesEndStudentsDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1955 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesMaxSimultaneousInSelectedTimeSlotsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2897 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesNotOverlappingForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1942 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesOccupyMaxTimeSlotsFromSelectionForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1838 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesPreferredStartingTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1825 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesPreferredTimeSlotsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1929 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesSameStartingDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1916 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesSameStartingHourForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1903 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivitiesSameStartingTimeForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1877 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityEndsStudentsDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2604 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityPreferredStartingTimeForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2962 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityPreferredStartingTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2949 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintActivityPreferredTimeSlotsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1981 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintBasicCompulsoryTimeForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2347 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintBreakTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 2923 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintMaxDaysBetweenActivitiesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2910 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintMinDaysBetweenActivitiesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2936 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintMinGapsBetweenActivitiesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2822 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsActivityTagMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2853 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(!ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintStudentsActivityTagMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2731 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsEarlyMaxBeginningsAtSecondHourForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2451 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsIntervalMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2661 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       
       if(!ENABLE_STUDENTS_MAX_GAPS_PER_DAY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintStudentsMaxGapsPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2630 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMaxGapsPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2796 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2770 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2884 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsMinHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2809 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetActivityTagMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2835 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(!ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintStudentsSetActivityTagMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2744 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetEarlyMaxBeginningsAtSecondHourForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2438 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetIntervalMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2643 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(!ENABLE_STUDENTS_MAX_GAPS_PER_DAY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintStudentsSetMaxGapsPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2617 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMaxGapsPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2783 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2757 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2871 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetMinHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2334 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintStudentsSetNotAvailableTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1864 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubactivitiesPreferredStartingTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1851 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintSubactivitiesPreferredTimeSlotsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2529 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherActivityTagMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2560 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(!ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintTeacherActivityTagMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2412 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherIntervalMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2360 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2718 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxGapsPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2692 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxGapsPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2503 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2477 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2386 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMinDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2591 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherMinHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1968 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeacherNotAvailableTimesForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2516 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersActivityTagMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2542 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       
       if(!ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY){
              enableNotPerfectMessage();
              return;
       }

       ConstraintTeachersActivityTagMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2425 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersIntervalMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2373 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2705 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxGapsPerDayForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2679 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxGapsPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2490 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxHoursContinuouslyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2464 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMaxHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2399 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMinDaysPerWeekForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 2578 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTeachersMinHoursDailyForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1799 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintThreeActivitiesGroupedForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1773 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTwoActivitiesConsecutiveForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1786 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTwoActivitiesGroupedForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1812 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       ConstraintTwoActivitiesOrderedForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 1527 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       YearsForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 834 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       recentFiles.clear();
       updateRecentFileActions();
}

Here is the call graph for this function:

Definition at line 773 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       close();
}

Definition at line 1151 of file fetmainform.cpp.

                                                  {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Export::exportCSV(this);
}

Here is the call graph for this function:

Definition at line 1118 of file fetmainform.cpp.

                                                            {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVActivities(this);

       //TODO: if the import takes care of locked activities, then we need
       //to do:
       //LockUnlock::computeLockedUnlockedActivitiesTimeSpace();
       //LockUnlock::increaseCommunicationSpinBox();
       //after the importing
}

Here is the call graph for this function:

Definition at line 1133 of file fetmainform.cpp.

                                                              {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVActivityTags(this);
}

Here is the call graph for this function:

Definition at line 1091 of file fetmainform.cpp.

                                                                {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVRoomsAndBuildings(this);
}

Here is the call graph for this function:

Definition at line 1100 of file fetmainform.cpp.

                                                          {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVSubjects(this);
}

Here is the call graph for this function:

Definition at line 1109 of file fetmainform.cpp.

                                                          {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVTeachers(this);
}

Here is the call graph for this function:

Definition at line 1142 of file fetmainform.cpp.

                                                                      {
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       Import::importCSVStudents(this);
}

Here is the call graph for this function:

Definition at line 846 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       int confirm=0;
       
       if(gt.rules.modified){
              switch( QMessageBox::question(
               this,
               tr("FET application"),
               tr("Your current data file has been modified. Are you sure you want to reset to new empty data?"),
               QMessageBox::Yes|QMessageBox::No
               ) ){
              case QMessageBox::Yes: // Yes
                     confirm=1;
                     break;
              case QMessageBox::No: // No
                     confirm=0;
                     break;
              default:
                     assert(0);
                     break;
              }
       }
       else
              confirm=1;
       
       if(confirm){
              INPUT_FILENAME_XML=QString("");
              setCurrentFile(INPUT_FILENAME_XML);
       
              if(gt.rules.initialized)
                     gt.rules.kill();
              gt.rules.init();
              
              gt.rules.modified=true; //to avoid flicker of the main form modified flag

              bool tmp=gt.rules.addTimeConstraint(new ConstraintBasicCompulsoryTime(100));
              assert(tmp);
              tmp=gt.rules.addSpaceConstraint(new ConstraintBasicCompulsorySpace(100));
              assert(tmp);
              
              gt.rules.modified=true; //force update of the modified flag of the main window
              setRulesUnmodifiedAndOtherThings(&gt.rules);

              students_schedule_ready=false;
              teachers_schedule_ready=false;
              rooms_schedule_ready=false;

              LockUnlock::computeLockedUnlockedActivitiesTimeSpace();
              LockUnlock::increaseCommunicationSpinBox();

              statusBar()->showMessage(tr("New file generated"), STATUS_BAR_MILLISECONDS);
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 913 of file fetmainform.cpp.

{
       openFile(QString());
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1417 of file fetmainform.cpp.

{
       fileSave();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1085 of file fetmainform.cpp.

{
       fileSaveAs();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 2989 of file fetmainform.cpp.

{
       HelpAboutForm* form=new HelpAboutForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
}

Here is the call graph for this function:

Definition at line 3029 of file fetmainform.cpp.

{
       QString s="";
       s+=tr("In case the Help/Online menus do not function, please write down these addresses and open them in an Internet browser:");
       s+="\n\n";
       s+=tr("FET homepage: %1", "%1 is FET homepage, begins with http://...").arg("http://lalescu.ro/liviu/fet/");
       s+="\n";
       s+=tr("Documentation (online help contents): %1", "%1 is web page of FET Doc(umentation), which is the contents of the online help, it begins with http://...").arg("http://lalescu.ro/liviu/fet/doc/");
       s+="\n";
       s+=tr("Forum: %1", "%1 is web page of FET forum, begins with http://...").arg("http://lalescu.ro/liviu/fet/forum/");
       s+="\n\n";
       s+=tr("Additionally, you may find on the FET homepage other contact information.");
       s+="\n\n";
       s+=tr("In case these addresses do not function, maybe the FET webpage has temporary problems, so try again later. Or maybe the FET webpage has changed, so search for the new page on the Internet.");

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

Here is the call graph for this function:

Definition at line 3009 of file fetmainform.cpp.

{
       bool tds=QDesktopServices::openUrl(QUrl("http://lalescu.ro/liviu/fet/doc/"));

       if(!tds){
              QMessageBox::warning(this, tr("FET warning"), tr("Could not start the default Internet browser (trying to open the link %1)."
              " Maybe you can try to manually start your browser and open this link.").arg("http://lalescu.ro/liviu/fet/doc/"));
       }
}

Definition at line 3047 of file fetmainform.cpp.

{
       HelpFaqForm* form=new HelpFaqForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
}

Here is the call graph for this function:

Definition at line 3019 of file fetmainform.cpp.

{
       bool tds=QDesktopServices::openUrl(QUrl("http://lalescu.ro/liviu/fet/forum/"));

       if(!tds){
              QMessageBox::warning(this, tr("FET warning"), tr("Could not start the default Internet browser (trying to open the link %1)."
              " Maybe you can try to manually start your browser and open this link.").arg("http://lalescu.ro/liviu/fet/forum/"));
       }
}

Definition at line 2999 of file fetmainform.cpp.

{
       bool tds=QDesktopServices::openUrl(QUrl("http://lalescu.ro/liviu/fet/"));

       if(!tds){
              QMessageBox::warning(this, tr("FET warning"), tr("Could not start the default Internet browser (trying to open the link %1)."
              " Maybe you can try to manually start your browser and open this link.").arg("http://lalescu.ro/liviu/fet/"));
       }
}

Definition at line 3067 of file fetmainform.cpp.

{
       HelpInstructionsForm* form=new HelpInstructionsForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
}

Here is the call graph for this function:

Definition at line 1580 of file fetmainform.cpp.

{
       QString s;
       
       s+=tr("Probably some settings which are more difficult to understand are these ones:");
       s+="\n\n";
       s+=tr("Option 'Divide html timetables with time-axis by days':"
       " This means simply that the html timetables of type 'time horizontal' or 'time vertical' (see the generated html timetables)"
       " should be or not divided according to the days.");
       s+=" ";
       s+=tr("If the 'time horizontal' or 'time vertical' html timetables are too large for you, then you might need to select this option");
       
       s+="\n\n";
       s+=tr("Option 'Print activities with same starting time in timetables': selecting it means that the html timetables will contain for"
        " each slot all the activities which have the same starting time (fact specified by your constraints) as the activity(ies) which are normally shown in this slot."
        " If you don't use constraints activities same starting time, this option has no effect for you.");
        
       s+="\n\n";
       s+=tr("Seed of random number generator: please read the help in the dialog of this option");
       
       s+="\n\n";
       s+=tr("Interface - use colors: the places with colors in FET interface are in:");
       s+="\n";
       s+=" -";
       s+=tr("add/modify constraints break, not available, preferred starting times or time slots (the table cells will have green or red colors).");
       s+="\n";
       s+=" -";
       s+=tr("activities and subactivities dialogs, the inactive activities will have a distinctive background color");
       s+="\n";
       s+=" -";
       s+=tr("all time constraints and all space constraints dialogs, the inactive constraints will have a distinctive background color");
       
       s+="\n\n";
       s+=tr("Enable activity tag max hours daily:");
       s+="\n";
       s+=tr("This will enable the menu for 4 constraints: teacher(s) or students (set) activity tag max hours daily. These 4 constraints are good, but not perfect and"
              " may bring slow down of generation or impossible timetables if used unproperly. Select only if you know what you're doing.");
       s+="\n\n";
       s+=tr("Enable students max gaps per day:");
       s+="\n";
       s+=tr("This will enable the menu for 2 constraints: students (set) max gaps per day. These 2 constraints are good, but not perfect and"
              " may bring slow down of generation or impossible timetables if used unproperly. Select only if you know what you're doing.");
              
       s+="\n\n";
       s+=tr("Warn if using not perfect constraints:", "this is a warning if user uses not perfect constraints");
       s+="\n";
       s+=tr("If you use a not perfect constraint (activity tag max hours daily or students max gaps per day), you'll get a warning before generating"
              ". Uncheck this option to get rid of that warning (it is recommended to keep the warning).");
       
       s+="\n\n";
       s+=tr("Enable students min hours daily with empty days:");
       s+="\n";
       s+=tr("This will enable you to modify the students min hours daily constraints, to allow empty days. It is IMPERATIVE (for performance reasons) to allow empty days for students min hours daily only"
              " if your institution allows empty days for students and if a solution with empty days is possible. Select only if you know what you're doing.");
              
       s+="\n\n";
       s+=tr("Warn if using students min hours daily with empty days:", "this is a warning if user has constraints min hours daily for students with allowed empty days");
       s+="\n";
       s+=tr("If you use constraints students min hours daily with allowed empty days, you'll get a warning before generating"
              ". Uncheck this option to get rid of that warning (it is recommended to keep the warning).");
              
       s+="\n\n";
       
       s+=tr("Confirmations: unselect the corresponding check boxes if you want to skip introduction and confirmation to various advanced dialogs.");
       
       LongTextMessageBox::largeInformation(this, tr("FET information"), s);
}

Here is the call graph for this function:

Definition at line 3057 of file fetmainform.cpp.

{
       HelpTipsForm* form=new HelpTipsForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
}

Here is the call graph for this function:

Definition at line 3294 of file fetmainform.cpp.

{
       QDialog dialog(this);
       dialog.setWindowTitle(tr("Please select FET language"));
       
       QVBoxLayout* taMainLayout=new QVBoxLayout(&dialog);

       QPushButton* tapb1=new QPushButton(tr("Cancel"));
       QPushButton* tapb2=new QPushButton(tr("OK"));
                            
       QHBoxLayout* buttons=new QHBoxLayout();
       buttons->addStretch();
       buttons->addWidget(tapb1);
       buttons->addWidget(tapb2);
       
       QComboBox* languagesComboBox=new QComboBox();
       
       QSize tmp=languagesComboBox->minimumSizeHint();
       Q_UNUSED(tmp);
       
       //this is the other place (out of 2) in which you need to add a new language
       QMap<QString, QString> languagesMap;
       languagesMap.insert("en_US", tr("US English"));
       languagesMap.insert("ar", tr("Arabic"));
       languagesMap.insert("ca", tr("Catalan"));
       languagesMap.insert("de", tr("German"));
       languagesMap.insert("el", tr("Greek"));
       languagesMap.insert("es", tr("Spanish"));
       languagesMap.insert("fr", tr("French"));
       languagesMap.insert("hu", tr("Hungarian"));
       languagesMap.insert("id", tr("Indonesian"));
       languagesMap.insert("it", tr("Italian"));
       languagesMap.insert("lt", tr("Lithuanian"));
       languagesMap.insert("mk", tr("Macedonian"));
       languagesMap.insert("ms", tr("Malay"));
       languagesMap.insert("nl", tr("Dutch"));
       languagesMap.insert("pl", tr("Polish"));
       languagesMap.insert("ro", tr("Romanian"));
       languagesMap.insert("tr", tr("Turkish"));
       languagesMap.insert("ru", tr("Russian"));
       languagesMap.insert("fa", tr("Persian"));
       languagesMap.insert("uk", tr("Ukrainian"));
       languagesMap.insert("pt_BR", tr("Brazilian Portuguese"));
       languagesMap.insert("da", tr("Danish"));
       languagesMap.insert("si", tr("Sinhala"));
       languagesMap.insert("sk", tr("Slovak"));
       languagesMap.insert("he", tr("Hebrew"));
       languagesMap.insert("sr", tr("Serbian"));
       languagesMap.insert("gl", tr("Galician"));
       languagesMap.insert("vi", tr("Vietnamese"));
       languagesMap.insert("uz", tr("Uzbek"));
       
       //assert(languagesMap.count()==N_LANGUAGES);
       
       QMapIterator<QString, QString> it(languagesMap);
       int i=0;
       int j=-1;
       int eng=-1;
       while(it.hasNext()){
              it.next();
              languagesComboBox->addItem( it.key() + " (" + it.value() + ")" );
              if(it.key()==FET_LANGUAGE)
                     j=i;
              if(it.key()=="en_US")
                     eng=i;
              i++;
       }
       assert(eng>=0);
       if(j==-1){
              QMessageBox::warning(this, tr("FET warning"), tr("Invalid current language - making it en_US (US English)"));
              FET_LANGUAGE="en_US";
              j=eng;
       }
       languagesComboBox->setCurrentIndex(j);
       
       QLabel* label=new QLabel(tr("Please select FET language"));
       
       QHBoxLayout* languagesLayout=new QHBoxLayout();
       languagesLayout->addWidget(languagesComboBox);
       //languagesLayout->addStretch();
       
       taMainLayout->addStretch();
       taMainLayout->addWidget(label);
       //taMainLayout->addWidget(languagesComboBox);
       taMainLayout->addLayout(languagesLayout);
       taMainLayout->addStretch();
       taMainLayout->addLayout(buttons);

       QObject::connect(tapb2, SIGNAL(clicked()), &dialog, SLOT(accept()));
       QObject::connect(tapb1, SIGNAL(clicked()), &dialog, SLOT(reject()));
       
       tapb2->setDefault(true);
       tapb2->setFocus();
       
       const QString settingsName=QString("LanguageSelectionForm");

       int w=dialog.sizeHint().width();
       if(w<350)
              w=350;
       int h=dialog.sizeHint().height();
       if(h<180)
              h=180;
       dialog.resize(w,h);
       centerWidgetOnScreen(&dialog);
       restoreFETDialogGeometry(&dialog, settingsName);
       
       setParentAndOtherThings(&dialog, this);
       bool ok=dialog.exec();
       saveFETDialogGeometry(&dialog, settingsName);
       if(!ok)
              return;
              
       //QString newLang=languagesComboBox->currentText();
       int k=languagesComboBox->currentIndex();
       i=0;
       bool found=false;
       QMapIterator<QString, QString> it2(languagesMap);
       while(it2.hasNext()){
              it2.next();
              if(i==k){
                     FET_LANGUAGE=it2.key();
                     found=true;
              }
              i++;
       }
       if(!found){
              QMessageBox::warning(this, tr("FET warning"), tr("Invalid language selected - making it en_US (US English)"));
              FET_LANGUAGE="en_US";
       }
       
       setLanguage(*pqapplication, this);
       setCurrentFile(INPUT_FILENAME_XML);

       //QMessageBox::information(this, tr("FET information"), tr("Language %1 selected").arg( FET_LANGUAGE+" ("+languagesMap.value(FET_LANGUAGE)+")" )+"\n\n"+
       // tr("Please exit and restart FET to activate language change"));
}

Here is the call graph for this function:

Definition at line 3811 of file fetmainform.cpp.

{
       RandomSeedDialog dialog(this);
       
       setParentAndOtherThings(&dialog, this);
       int te=dialog.exec();
       
       if(te==QDialog::Accepted){
              int tx=dialog.lineEditX->text().toInt();
              if(!(tx>=1 && tx<MM)){
                     assert(0);
                     //QMessageBox::warning(this, tr("FET warning"), tr("The random seed X component must be at least %1 and at most %2").arg(1).arg(MM-1));
                     //return;
              }

              int ty=dialog.lineEditY->text().toInt();
              if(!(ty>=1 && ty<MMM)){
                     assert(0);
                     //QMessageBox::warning(this, tr("FET warning"), tr("The random seed Y component must be at least %1 and at most %2").arg(1).arg(MMM-1));
                     //return;
              }

              XX=tx;
              YY=ty;
       }
}

Here is the call graph for this function:

Definition at line 3756 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       
       if(CONFIRM_REMOVE_REDUNDANT){
              int confirm;
       
              RemoveRedundantConfirmationForm c_form(this);
              setParentAndOtherThings(&c_form, this);
              confirm=c_form.exec();

              if(confirm==QDialog::Accepted){
                     if(c_form.dontShowAgain)
                            settingsConfirmRemoveRedundantAction->setChecked(false);

                     RemoveRedundantForm form(&c_form);
                     setParentAndOtherThings(&form, &c_form);
                     form.exec();
              }
       }
       else{
              RemoveRedundantForm form(this);
              setParentAndOtherThings(&form, this);
              form.exec();
       }
}

Here is the call graph for this function:

Definition at line 3787 of file fetmainform.cpp.

{
       QString od;
       
       od = QFileDialog::getExistingDirectory(this, tr("Choose results (output) directory"), OUTPUT_DIR);
       
       if(!od.isNull()){
              QFile test(od+FILE_SEP+"test_write_permissions_3.tmp");
              bool existedBefore=test.exists();
              bool t=test.open(QIODevice::ReadWrite);
              //if(!test.exists())
              //     t=false;
              if(!t){
                     QMessageBox::warning(this, tr("FET warning"), tr("You don't have write permissions in this directory"));
                     return;
              }
              test.close();
              if(!existedBefore)
                     test.remove();
       
              OUTPUT_DIR=od;
       }
}

Definition at line 610 of file fetmainform.cpp.

{
       CONFIRM_ACTIVITY_PLANNING=settingsConfirmActivityPlanningAction->isChecked();
}

Definition at line 620 of file fetmainform.cpp.

{
       CONFIRM_REMOVE_REDUNDANT=settingsConfirmRemoveRedundantAction->isChecked();
}

Definition at line 625 of file fetmainform.cpp.

{
       CONFIRM_SAVE_TIMETABLE=settingsConfirmSaveTimetableAction->isChecked();
}

Definition at line 615 of file fetmainform.cpp.

{
       CONFIRM_SPREAD_ACTIVITIES=settingsConfirmSpreadActivitiesAction->isChecked();
}

Definition at line 3640 of file fetmainform.cpp.

{
       PRINT_ACTIVITIES_WITH_SAME_STARTING_TIME=settingsPrintActivitiesWithSameStartingTimeAction->isChecked();
}

Definition at line 3635 of file fetmainform.cpp.

{
       PRINT_BREAK_TIME_SLOTS=settingsPrintBreakSlotsAction->isChecked();
}

Definition at line 3630 of file fetmainform.cpp.

{
       PRINT_NOT_AVAILABLE_TIME_SLOTS=settingsPrintNotAvailableSlotsAction->isChecked();
}

Definition at line 3431 of file fetmainform.cpp.

{
       QString default_working_directory="examples";
       QDir d2(default_working_directory);
       if(!d2.exists())
              default_working_directory=QDir::homePath();
       else
              default_working_directory=d2.absolutePath();

       QString s=tr("Are you sure you want to reset all settings to defaults?");
       s+="\n\n";
       
       s+=tr("That means:");
       s+="\n";

       s+=QString("1. ")+tr("The geometry and any other saved settings of all the windows and dialogs will be reset to default");
       s+="\n";

       s+=QString("2. ")+tr("Show shortcut buttons in main window will be %1", "%1 is true or false").arg(tr("true"));
       s+="\n";

       s+=QString("3. ")+tr("In the shortcuts tab from the main window, the first section will be selected/shown", "Option refers to the main window tab widget for shortcuts, which currently contains 5 tabs: File, Data, "
              "Time, Space, Timetable (so it will select/show File tab).");
       s+="\n";

       s+=QString("4. ")+tr("Check for updates at startup will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("5. ")+tr("Use colors in FET graphical user interface will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("6. ")+tr("Language will be %1 (restart needed to activate language change)", "%1 is the default language").arg(QString("en_US")+QString(" (")+tr("US English")+QString(")"));
       s+="\n";

       s+=QString("7. ")+tr("The list of recently used files will be cleared");
       s+="\n";
       
       s+=QString("8. ")+tr("Working directory will be %1", "%1 is the directory").arg(QDir::toNativeSeparators(default_working_directory));
       s+="\n";

       s+=QString("9. ")+tr("Output directory will be %1", "%1 is the directory").arg(QDir::toNativeSeparators(QDir::homePath()+FILE_SEP+"fet-results"));
       s+="\n";

       s+=QString("10. ")+tr("Import directory will be %1", "%1 is the directory").arg(QDir::toNativeSeparators(QDir::homePath()+FILE_SEP+"fet-results"));
       s+="\n";

       s+=QString("11. ")+tr("Html level of the timetables will be %1", "%1 is default html level").arg(2);
       s+="\n";

       s+=QString("12. ")+tr("Mark not available slots with -x- in timetables will be %1", "%1 is true or false. Lowercase -x-").arg(tr("true"));
       s+="\n";

       s+=QString("13. ")+tr("Mark break slots with -X- in timetables will be %1", "%1 is true or false. Uppercase -X-").arg(tr("true"));
       s+="\n";

       s+=QString("14. ")+tr("Divide html timetables with time-axis by days will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("15. ")+tr("Print activities with same starting time will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("16. ")+tr("Enable activity tag max hours daily will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("17. ")+tr("Enable students max gaps per day will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("18. ")+tr("Warn if using not perfect constraints will be %1", "%1 is true or false. This is a warning if user uses not perfect constraints").arg(tr("true"));
       s+="\n";

       s+=QString("19. ")+tr("Enable constraints students min hours daily with empty days will be %1", "%1 is true or false").arg(tr("false"));
       s+="\n";

       s+=QString("20. ")+tr("Warn if using constraints students min hours daily with empty days will be %1", "%1 is true or false. This is a warning if user uses a nonstandard constraint"
              " students min hours daily with allowed empty days").arg(tr("true"));
       s+="\n";

       s+=QString("21. ")+tr("Confirm activity planning will be %1", "%1 is true or false").arg(tr("true"));
       s+="\n";
       s+=QString("22. ")+tr("Confirm spread activities over the week will be %1", "%1 is true or false").arg(tr("true"));
       s+="\n";
       s+=QString("23. ")+tr("Confirm remove redundant constraints will be %1", "%1 is true or false").arg(tr("true"));
       s+="\n";
       s+=QString("24. ")+tr("Confirm save data and timetable as will be %1", "%1 is true or false").arg(tr("true"));
       //s+="\n";

       switch( LongTextMessageBox::largeConfirmation( this, tr("FET confirmation"), s,
        tr("&Yes"), tr("&No"), QString(), 0 , 1 ) ) {
       case 0: // Yes
              break;
       case 1: // No
              return;
       }

       QSettings settings(COMPANY, PROGRAM);
       settings.clear();
       
       recentFiles.clear();
       updateRecentFileActions();

       resize(ORIGINAL_WIDTH, ORIGINAL_HEIGHT);
       //move(ORIGINAL_X, ORIGINAL_Y);
       forceCenterWidgetOnScreen(this);
       
       FET_LANGUAGE="en_US";
       
       checkForUpdatesAction->setChecked(false);
       checkForUpdates=0;
       
       SHOW_SHORTCUTS_ON_MAIN_WINDOW=true;
       settingsShowShortcutsOnMainWindowAction->setChecked(SHOW_SHORTCUTS_ON_MAIN_WINDOW);
       tabWidget->setVisible(SHOW_SHORTCUTS_ON_MAIN_WINDOW);
       
       tabWidget->setCurrentIndex(0);
       
       USE_GUI_COLORS=false;
       settingsUseColorsAction->setChecked(USE_GUI_COLORS);
       
       CONFIRM_ACTIVITY_PLANNING=true;
       settingsConfirmActivityPlanningAction->setChecked(CONFIRM_ACTIVITY_PLANNING);
       
       CONFIRM_SPREAD_ACTIVITIES=true;
       settingsConfirmSpreadActivitiesAction->setChecked(CONFIRM_SPREAD_ACTIVITIES);
       
       CONFIRM_REMOVE_REDUNDANT=true;
       settingsConfirmRemoveRedundantAction->setChecked(CONFIRM_REMOVE_REDUNDANT);
       
       CONFIRM_SAVE_TIMETABLE=true;
       settingsConfirmSaveTimetableAction->setChecked(CONFIRM_SAVE_TIMETABLE);

       ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY=false;
       enableActivityTagMaxHoursDailyAction->setChecked(ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);

       ENABLE_STUDENTS_MAX_GAPS_PER_DAY=false;
       enableStudentsMaxGapsPerDayAction->setChecked(ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
       
       SHOW_WARNING_FOR_NOT_PERFECT_CONSTRAINTS=true;
       showWarningForNotPerfectConstraintsAction->setChecked(SHOW_WARNING_FOR_NOT_PERFECT_CONSTRAINTS);
       
       setEnabledIcon(dataTimeConstraintsTeacherActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsTeachersActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);
       setEnabledIcon(dataTimeConstraintsStudentsSetActivityTagMaxHoursDailyAction, ENABLE_ACTIVITY_TAG_MAX_HOURS_DAILY);

       setEnabledIcon(dataTimeConstraintsStudentsSetMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);
       setEnabledIcon(dataTimeConstraintsStudentsMaxGapsPerDayAction, ENABLE_STUDENTS_MAX_GAPS_PER_DAY);

       ENABLE_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS=false;
       enableStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(ENABLE_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS);

       SHOW_WARNING_FOR_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS=true;
       showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(SHOW_WARNING_FOR_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS);

       
       timetablesDivideByDaysAction->setChecked(false);
       DIVIDE_HTML_TIMETABLES_WITH_TIME_AXIS_BY_DAYS=false;
       
       WORKING_DIRECTORY=default_working_directory;
       
       OUTPUT_DIR=QDir::homePath()+FILE_SEP+"fet-results";
       QDir dir;
       if(!dir.exists(OUTPUT_DIR))
              dir.mkpath(OUTPUT_DIR);
       IMPORT_DIRECTORY=OUTPUT_DIR;
       
       TIMETABLE_HTML_LEVEL=2;
       
       settingsPrintNotAvailableSlotsAction->setChecked(true);
       PRINT_NOT_AVAILABLE_TIME_SLOTS=true;

       settingsPrintBreakSlotsAction->setChecked(true);
       PRINT_BREAK_TIME_SLOTS=true;

       settingsPrintActivitiesWithSameStartingTimeAction->setChecked(false);
       PRINT_ACTIVITIES_WITH_SAME_STARTING_TIME=false;

       setLanguage(*pqapplication, this);
       setCurrentFile(INPUT_FILENAME_XML);
}

Here is the call graph for this function:

Definition at line 631 of file fetmainform.cpp.

{
       SHOW_SHORTCUTS_ON_MAIN_WINDOW=settingsShowShortcutsOnMainWindowAction->isChecked();
       tabWidget->setVisible(SHOW_SHORTCUTS_ON_MAIN_WINDOW);
}

Definition at line 3617 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       SettingsTimetableHtmlLevelForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
}

Here is the call graph for this function:

Definition at line 604 of file fetmainform.cpp.

{
       USE_GUI_COLORS=settingsUseColorsAction->isChecked();
}

Definition at line 4098 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4036 of file fetmainform.cpp.

{
       menuActivities_space_constraints->popup(QCursor::pos());
}

Definition at line 3994 of file fetmainform.cpp.

{
       menuActivities_time_constraints->popup(QCursor::pos());
}

Definition at line 4083 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4026 of file fetmainform.cpp.

{
       menuActivity_tags_space_constraints->popup(QCursor::pos());
}

Definition at line 3974 of file fetmainform.cpp.

{
       shortcutAdvancedTimeMenu->popup(QCursor::pos());
}

Definition at line 4001 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 3969 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4073 of file fetmainform.cpp.

{
       shortcutBasicMenu->popup(QCursor::pos());
}

Definition at line 3979 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4113 of file fetmainform.cpp.

{
       shortcutDataAdvancedMenu->popup(QCursor::pos());
}

Definition at line 4108 of file fetmainform.cpp.

{
       shortcutDataSpaceMenu->popup(QCursor::pos());
}

Definition at line 4047 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4042 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4119 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4124 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4129 of file fetmainform.cpp.

{
       fileOpenRecentMenu->popup(QCursor::pos());
}

Definition at line 4006 of file fetmainform.cpp.

{
       menuRooms_space_constraints->popup(QCursor::pos());
}

Definition at line 4139 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4134 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4067 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4093 of file fetmainform.cpp.

{
       menuStudents->popup(QCursor::pos());
}

Definition at line 4016 of file fetmainform.cpp.

{
       menuStudents_space_constraints->popup(QCursor::pos());
}

Definition at line 3989 of file fetmainform.cpp.

{
       menuStudents_time_constraints->popup(QCursor::pos());
}

Definition at line 4103 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4031 of file fetmainform.cpp.

{
       menuSubjects_and_activity_tags_space_constraints->popup(QCursor::pos());
}

Definition at line 4078 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4021 of file fetmainform.cpp.

{
       menuSubjects_space_constraints->popup(QCursor::pos());
}

Definition at line 4088 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4011 of file fetmainform.cpp.

{
       menuTeachers_space_constraints->popup(QCursor::pos());
}

Definition at line 3984 of file fetmainform.cpp.

{
       menuTeachers_time_constraints->popup(QCursor::pos());
}

Definition at line 4062 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4057 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 4052 of file fetmainform.cpp.

Here is the call graph for this function:

Definition at line 3672 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }
       
       if(gt.rules.nDaysPerWeek>=7){
              QString s;
              s=tr("You have more than 6 days per week, so probably you won't need this feature. Do you still want to continue?");
              
              int cfrm=0;
              switch( QMessageBox::question( this, tr("FET question"),
               s,
               tr("&Continue"), tr("&Cancel"), 0 , 1 ) ) {
              case 0: // Yes - continue
                     cfrm=1;
                     break;
              case 1: // No - cancel
                     cfrm=0;
                     break;
              }

              if(!cfrm){
                     return;
              }
       }
       
       if(gt.rules.nDaysPerWeek<=4){
              QString s;
              s=tr("You have less than 5 days per week, so probably you won't need this feature. Do you still want to continue?");
              
              int cfrm=0;
              switch( QMessageBox::question( this, tr("FET question"),
               s,
               tr("&Continue"), tr("&Cancel"), 0 , 1 ) ) {
              case 0: // Yes - continue
                     cfrm=1;
                     break;
              case 1: // No - cancel
                     cfrm=0;
                     break;
              }

              if(!cfrm){
                     return;
              }
       }
       
       if(CONFIRM_SPREAD_ACTIVITIES){
              int confirm;
       
              SpreadConfirmationForm c_form(this);
              setParentAndOtherThings(&c_form, this);
              confirm=c_form.exec();

              if(confirm==QDialog::Accepted){
                     if(c_form.dontShowAgain)
                            settingsConfirmSpreadActivitiesAction->setChecked(false);
                     
                     SpreadMinDaysConstraintsFiveDaysForm form(&c_form);
                     setParentAndOtherThings(&form, &c_form);
                     form.exec();
              }
       }
       else{
              SpreadMinDaysConstraintsFiveDaysForm form(this);
              setParentAndOtherThings(&form, this);
              form.exec();
       }
}

Here is the call graph for this function:

Definition at line 3745 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       StatisticsExport::exportStatistics(this);
}

Here is the call graph for this function:

Definition at line 3077 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       int count=0;
       for(int i=0; i<gt.rules.activitiesList.size(); i++){
              Activity* act=gt.rules.activitiesList[i];
              if(act->active)
                     count++;
       }
       if(count<1){
              QMessageBox::information(this, tr("FET information"), tr("Please input at least one active activity before generating"));
              return;
       }
       TimetableGenerateForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();
       
       LockUnlock::increaseCommunicationSpinBox();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3102 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       if(INPUT_FILENAME_XML.isEmpty()){
              QMessageBox::information(this, tr("FET information"),
                     tr("Your current data has no name. Please save it as a file with a certain name before proceeding."));
              return;
       }

       int count=0;
       for(int i=0; i<gt.rules.activitiesList.size(); i++){
              Activity* act=gt.rules.activitiesList[i];
              if(act->active)
                     count++;
       }
       if(count<1){
              QMessageBox::information(this, tr("FET information"), tr("Please input at least one active activity before generating multiple"));
              return;
       }
       TimetableGenerateMultipleForm form(this);
       setParentAndOtherThings(&form, this);
       form.exec();

       LockUnlock::increaseCommunicationSpinBox();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3254 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::lockDay(this);
}

Here is the call graph for this function:

Definition at line 3274 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::lockEndStudentsDay(this);
}

Here is the call graph for this function:

Definition at line 3234 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::lockAll(this);
}

Here is the call graph for this function:

Definition at line 3215 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       if(gt.rules.nInternalRooms!=gt.rules.roomsList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some rooms. Please regenerate the timetable and then view it"));
              return;
       }
       if(gt.rules.nInternalTeachers!=gt.rules.teachersList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some teachers. Please regenerate the timetable and then view it"));
              return;
       }
       
       StartTimetablePrint::startTimetablePrint(this);
}

Here is the call graph for this function:

Definition at line 1161 of file fetmainform.cpp.

{
       if(!students_schedule_ready || !teachers_schedule_ready || !rooms_schedule_ready){
              QMessageBox::warning(this, tr("FET - Warning"), tr("You have not yet generated a timetable - please generate firstly"));
              return;
       }

       Solution* tc=&best_solution;
       
       for(int ai=0; ai<gt.rules.nInternalActivities; ai++){
              //Activity* act=&gt.rules.internalActivitiesList[ai];
              int time=tc->times[ai];
              if(time==UNALLOCATED_TIME){
                     QMessageBox::warning(this, tr("FET - Warning"), tr("It seems that you have an incomplete timetable."
                      " Saving of timetable does not work for incomplete timetables. Please generate a complete timetable"));
                      //.arg(act->id));
                     return;       
              }
              
              int ri=tc->rooms[ai];
              if(ri==UNALLOCATED_SPACE){
                     QMessageBox::warning(this, tr("FET - Warning"), tr("It seems that you have an incomplete timetable."
                      " Saving of timetable does not work for incomplete timetables. Please generate a complete timetable"));
                      //.arg(act->id));
                     return;       
              }
       }

       bool ok_to_continue;
       SaveTimetableConfirmationForm* pc_form=NULL;
       if(CONFIRM_SAVE_TIMETABLE){
              int confirm;
              
              pc_form=new SaveTimetableConfirmationForm(this);
              setParentAndOtherThings(pc_form, this);
              confirm=pc_form->exec();
              
              if(confirm==QDialog::Accepted){
                     if(pc_form->dontShowAgain)
                            settingsConfirmSaveTimetableAction->setChecked(false);
                     
                     ok_to_continue=true;
              }
              else
                     ok_to_continue=false;
       }
       else
              ok_to_continue=true;
              
       if(ok_to_continue){
              QWidget* parent=pc_form;
              if(parent==NULL)
                     parent=this;

              QString s;

              for(;;){
                     s = QFileDialog::getSaveFileName(parent, tr("Choose a filename for data and timetable"),
                            INPUT_FILENAME_XML, tr("FET XML files", "Instructions for translators: FET XML is a type of file format (using text mode). "
                            "So this field means files in the FET XML format")+" (*.fet)"+";;"+tr("All files")+" (*)",
                            0, QFileDialog::DontConfirmOverwrite);
                     if(s==QString())
                            return;

                     int tmp2=s.lastIndexOf(FILE_SEP);
                     QString s2=s.right(s.length()-tmp2-1);
                            
                     if(s2.indexOf("\"") >= 0){
                            QMessageBox::warning(parent, tr("FET information"), tr("Please do not use quotation marks \" in filename, the html css code does not work"));
                            return;
                     }
                     if(s2.indexOf(";") >= 0){
                            QMessageBox::warning(parent, tr("FET information"), tr("Please do not use semicolon ; in filename, the html css code does not work"));
                            return;
                     }
                     if(s2.indexOf("#") >= 0){
                            QMessageBox::warning(parent, tr("FET information"), tr("Please do not use # in filename, the html css code does not work"));
                            return;
                     }
                     
                     if(s.right(4)!=".fet")
                            s+=".fet";

                     int tmp=s.lastIndexOf(FILE_SEP);
                     WORKING_DIRECTORY=s.left(tmp);

                     if(QFile::exists(s)){
                            QString t=tr("File exists");
                            t+="\n\n";
                            t+=tr("For safety (so you don't lose work), it is not allowed to overwrite an existing file with"
                                   " locking and saving a current data+timetable");
                            t+="\n\n";
                            t+=tr("Please choose a non-existing name");
              
                            QMessageBox::warning( parent, tr("FET warning"), t);
                     }
                     else
                            break;
              }
                     
              rules2.initialized=true;
              
              rules2.institutionName=gt.rules.institutionName;
              rules2.comments=gt.rules.comments;
              
              rules2.nHoursPerDay=gt.rules.nHoursPerDay;
              for(int i=0; i<gt.rules.nHoursPerDay; i++)
                     rules2.hoursOfTheDay[i]=gt.rules.hoursOfTheDay[i];

              rules2.nDaysPerWeek=gt.rules.nDaysPerWeek;
              for(int i=0; i<gt.rules.nDaysPerWeek; i++)
                     rules2.daysOfTheWeek[i]=gt.rules.daysOfTheWeek[i];
                     
              rules2.yearsList=gt.rules.yearsList;
              
              rules2.teachersList=gt.rules.teachersList;
              
              rules2.subjectsList=gt.rules.subjectsList;
              
              rules2.activityTagsList=gt.rules.activityTagsList;

              rules2.activitiesList=gt.rules.activitiesList;

              rules2.buildingsList=gt.rules.buildingsList;

              rules2.roomsList=gt.rules.roomsList;

              rules2.timeConstraintsList=gt.rules.timeConstraintsList;
              
              rules2.spaceConstraintsList=gt.rules.spaceConstraintsList;

              //add locking constraints
              TimeConstraintsList lockTimeConstraintsList;
              SpaceConstraintsList lockSpaceConstraintsList;

              //bool report=true;
              
              int addedTime=0, duplicatesTime=0;
              int addedSpace=0, duplicatesSpace=0;
              
              QString constraintsString=QString("");

              //lock selected activities
              for(int ai=0; ai<gt.rules.nInternalActivities; ai++){
                     Activity* act=&gt.rules.internalActivitiesList[ai];
                     int time=tc->times[ai];
                     if(time>=0 && time<gt.rules.nDaysPerWeek*gt.rules.nHoursPerDay){
                            int hour=time/gt.rules.nDaysPerWeek;
                            int day=time%gt.rules.nDaysPerWeek;

                            ConstraintActivityPreferredStartingTime* ctr=new ConstraintActivityPreferredStartingTime(100.0, act->id, day, hour, false); //permanently locked is false
                            bool t=rules2.addTimeConstraint(ctr);
                                                 
                            if(t){
                                   addedTime++;
                                   lockTimeConstraintsList.append(ctr);
                            }
                            else
                                   duplicatesTime++;

                            QString s;

                            if(t)
                                   s=tr("Added to the saved file:", "It refers to a constraint")+QString("\n")+ctr->getDetailedDescription(gt.rules);
                            else{
                                   s=tr("NOT added to the saved file (already existing):", "It refers to a constraint")+QString("\n")+ctr->getDetailedDescription(gt.rules);
                                   delete ctr;
                            }
                            
                            constraintsString+=QString("\n");
                            constraintsString+=s;
                     }
                                          
                     int ri=tc->rooms[ai];
                     if(ri!=UNALLOCATED_SPACE && ri!=UNSPECIFIED_ROOM && ri>=0 && ri<gt.rules.nInternalRooms){
                            ConstraintActivityPreferredRoom* ctr=new ConstraintActivityPreferredRoom(100, act->id, (gt.rules.internalRoomsList[ri])->name, false); //false means not permanently locked
                            bool t=rules2.addSpaceConstraint(ctr);

                            QString s;
                                                 
                            if(t){
                                   addedSpace++;
                                   lockSpaceConstraintsList.append(ctr);
                            }
                            else
                                   duplicatesSpace++;

                            if(t)
                                   s=tr("Added to the saved file:", "It refers to a constraint")+QString("\n")+ctr->getDetailedDescription(gt.rules);
                            else{
                                   s=tr("NOT added to the saved file (already existing):", "It refers to a constraint")+QString("\n")+ctr->getDetailedDescription(gt.rules);
                                   delete ctr;
                            }
                            
                            constraintsString+=QString("\n");
                            constraintsString+=s;
                     }
              }

              LongTextMessageBox::largeInformation(parent, tr("FET information"), tr("Added %1 locking time constraints and %2 locking space constraints to saved file,"
              " ignored %3 activities which were already fixed in time and %4 activities which were already fixed in space.").arg(addedTime).arg(addedSpace).arg(duplicatesTime).arg(duplicatesSpace)
              +QString("\n\n")+tr("Detailed information about each locking constraint which was added or not (if already existing) to the saved file:")+QString("\n")+constraintsString
              +QString("\n")+tr("Your current data file remained untouched (no locking constraints were added), so you can save it also, or generate different timetables."));
                     
              bool result=rules2.write(parent, s);
              
              Q_UNUSED(result);
              
              while(!lockTimeConstraintsList.isEmpty())
                     delete lockTimeConstraintsList.takeFirst();
              while(!lockSpaceConstraintsList.isEmpty())
                     delete lockSpaceConstraintsList.takeFirst();

              rules2.nHoursPerDay=0;
              rules2.nDaysPerWeek=0;

              rules2.yearsList.clear();
              
              rules2.teachersList.clear();
              
              rules2.subjectsList.clear();
              
              rules2.activityTagsList.clear();

              rules2.activitiesList.clear();

              rules2.buildingsList.clear();

              rules2.roomsList.clear();

              rules2.timeConstraintsList.clear();
              
              rules2.spaceConstraintsList.clear();
       }
       
       if(pc_form!=NULL)
              delete pc_form;
}

Here is the call graph for this function:

Definition at line 637 of file fetmainform.cpp.

{
       DIVIDE_HTML_TIMETABLES_WITH_TIME_AXIS_BY_DAYS=timetablesDivideByDaysAction->isChecked();
}

Definition at line 3179 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       TimetableShowConflictsForm *form=new TimetableShowConflictsForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3264 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::unlockDay(this);
}

Here is the call graph for this function:

Definition at line 3284 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::unlockEndStudentsDay(this);
}

Here is the call graph for this function:

Definition at line 3244 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       AdvancedLockUnlockForm::unlockAll(this);
}

Here is the call graph for this function:

Definition at line 3194 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       if(gt.rules.nInternalRooms!=gt.rules.roomsList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some rooms. Please regenerate the timetable and then view it"));
              return;
       }

       TimetableViewRoomsForm* form=new TimetableViewRoomsForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
       form->resizeRowsAfterShow();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3133 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       if(gt.rules.nInternalRooms!=gt.rules.roomsList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some rooms. Please regenerate the timetable and then view it"));
              return;
       }

       TimetableViewStudentsForm *form=new TimetableViewStudentsForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
       form->resizeRowsAfterShow();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 3154 of file fetmainform.cpp.

{
       if(!(students_schedule_ready && teachers_schedule_ready && rooms_schedule_ready)){
              QMessageBox::information(this, tr("FET information"), tr("Please generate, firstly"));
              return;
       }

       if(gt.rules.nInternalRooms!=gt.rules.roomsList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some rooms. Please regenerate the timetable and then view it"));
              return;
       }
       if(gt.rules.nInternalTeachers!=gt.rules.teachersList.count()){
              QMessageBox::warning(this, tr("FET warning"), tr("Cannot display the timetable, because you added or removed some teachers. Please regenerate the timetable and then view it"));
              return;
       }
       
       TimetableViewTeachersForm *form=new TimetableViewTeachersForm(this);
       form->setWindowFlags(Qt::Window);
       form->setAttribute(Qt::WA_DeleteOnClose);
       forceCenterWidgetOnScreen(form);
       restoreFETDialogGeometry(form);
       form->show();
       form->resizeRowsAfterShow();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FetMainForm::openFile ( const QString &  fileName)

Definition at line 918 of file fetmainform.cpp.

{
       if(simulation_running){
              QMessageBox::information(this, tr("FET information"),
                     tr("Allocation in course.\nPlease stop simulation before this."));
              return;
       }

       int confirm=0;
       
       if(gt.rules.modified){
              switch( QMessageBox::question(
               this,
               tr("FET application"),
               tr("Your current data file has been modified. Are you sure you want to open another data file?"),
               QMessageBox::Yes|QMessageBox::No
               ) ){
              case QMessageBox::Yes: // Yes
                     confirm=1;
                     break;
              case QMessageBox::No: // No
                     confirm=0;
                     break;
              default:
                     assert(0);
                     break;
              }
       }
       else
              confirm=1;
       
       if(confirm){
              QString s=fileName;
              
              if(s.isNull()){
                     s = QFileDialog::getOpenFileName(this, tr("Choose a file to open"),
                      WORKING_DIRECTORY, 
                      tr("FET XML files", "Instructions for translators: FET XML is a type of file format (using text mode). "
                      "So this field means files in the FET XML format")+" (*.fet)"+";;"+tr("All files")+" (*)");

                     if(s.isNull())
                            return;
              }

              int tmp2=s.lastIndexOf(FILE_SEP);
              QString s2=s.right(s.length()-tmp2-1);
                     
              if(s2.indexOf("\"") >= 0){
                     QMessageBox::warning(this, tr("FET information"), 
                      tr("Please do not use quotation marks \" in filename, the html css code does not work."
                       " File was not loaded. Please rename it, removing not allowed characters and open it after that with FET."));
                     return;
              }             
              if(s2.indexOf(";") >= 0){
                     QMessageBox::warning(this, tr("FET information"), 
                      tr("Please do not use semicolon ; in filename, the html css code does not work."
                       " File was not loaded. Please rename it, removing not allowed characters and open it after that with FET."));
                     return;
              }
              if(s2.indexOf("#") >= 0){
                     QMessageBox::warning(this, tr("FET information"), 
                      tr("Please do not use # in filename, the html css code does not work."
                       " File was not loaded. Please rename it, removing not allowed characters and open it after that with FET."));
                     return;
              }
              /*if(s2.indexOf("(") >= 0 || s2.indexOf(")")>=0){
                     QMessageBox::information(this, tr("FET information"), tr("Please do not use parentheses () in filename, the html css code does not work"));
                     return;
              }*/
              else{
                     //QCursor orig=this->cursor();
                     //this->setCursor(Qt::WaitCursor);
                     statusBar()->showMessage(tr("Loading...", "This is a message in the status bar, that we are loading the file"), 0);
                     pqapplication->processEvents();
              
                     bool before=gt.rules.modified;
                     gt.rules.modified=true; //to avoid flicker of the main form modified flag

                     if(gt.rules.read(this, s)){
                            students_schedule_ready=false;
                            teachers_schedule_ready=false;
                            rooms_schedule_ready=false;

                            INPUT_FILENAME_XML = s;
                            
                            LockUnlock::computeLockedUnlockedActivitiesTimeSpace();
                            LockUnlock::increaseCommunicationSpinBox();

                            statusBar()->showMessage(tr("File opened"), STATUS_BAR_MILLISECONDS);
                            
                            gt.rules.modified=true; //force update of the modified flag of the main window
                            setRulesUnmodifiedAndOtherThings(&gt.rules);
                            
                            setCurrentFile(INPUT_FILENAME_XML);
                     }
                     else{
                            gt.rules.modified=before;
                     
                            statusBar()->showMessage("", STATUS_BAR_MILLISECONDS);
                            
                            //QMessageBox::information(this, tr("FET information"), tr("Invalid file"));

                            setCurrentFile(INPUT_FILENAME_XML);
                     }
                     
                     //this->setCursor(orig);
              }
              //get the directory
              int tmp=s.lastIndexOf(FILE_SEP);
              WORKING_DIRECTORY=s.left(tmp);
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FetMainForm::openRecentFile ( ) [slot]

Definition at line 906 of file fetmainform.cpp.

{
       QAction* action=qobject_cast<QAction*>(sender());
       if(action)
              openFile(action->data().toString());
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FetMainForm::replyFinished ( QNetworkReply *  networkReply) [slot]

Definition at line 642 of file fetmainform.cpp.

{
       if(networkReply->error()!=QNetworkReply::NoError){
              QString s=QString("");
              s+=tr("Could not search for possible updates on Internet - error message is: %1.").arg(networkReply->errorString());
              s+=QString("\n\n");
              s+=tr("Searching for file %1.").arg("http://lalescu.ro/liviu/fet/crtversion/crtversion.txt");
              s+=QString("\n\n");
              s+=tr("Possible actions: check your network connection, try again later, try to visit FET homepage: %1, or"
               " try to search for the new FET page on the Internet (maybe it has changed).").arg("http://lalescu.ro/liviu/fet/");

              QMessageBox::warning(this, tr("FET warning"), s);
       }
       else{
              QString internetVersion;
              QString additionalComments;
              
              QRegExp regExp("^\\s*(\\S+)(.*)$");
              int t=regExp.indexIn(QString(networkReply->readAll()));
              if(t!=0){
                     QString s=QString("");
                     s+=tr("The file %1 from the FET homepage, indicating the current FET version, is incorrect.").arg("http://lalescu.ro/liviu/fet/crtversion/crtversion.txt");
                     s+=QString("\n\n");
                     s+=tr("Maybe the FET homepage has some temporary problems, so try again later."
                      " Or maybe the current structure on FET homepage was changed. You may visit FET homepage: %1, and get latest version or,"
                      " if it does not work, try to search for the new FET page on the Internet (maybe it has changed).")
                       .arg("http://lalescu.ro/liviu/fet/");

                     QMessageBox::warning(this, tr("FET warning"), s);
              }
              else{
                     internetVersion=regExp.cap(1);
                     additionalComments=regExp.cap(2).trimmed();
       
                     cout<<"Your current version: '";
                     cout<<qPrintable(FET_VERSION)<<"'"<<endl;
                     cout<<"Latest version: '";
                     cout<<qPrintable(internetVersion)<<"'"<<endl;
       
                     if(internetVersion!=FET_VERSION){
                            QString s=tr("Another version: %1, is available on the FET homepage: %2", "%1 is new version, %2 is FET homepage").arg(internetVersion).arg("http://lalescu.ro/liviu/fet/");
                            s+=QString("\n\n");
                            s+=("You have to manually download and install.")+QString(" ")+tr("You may need to hit Refresh in your web browser.")+QString("\n\n")+tr("Would you like to open the FET homepage now?");
                            if(!additionalComments.isEmpty()){
                                   s+=QString("\n\n");
                                   s+=tr("Additional comments: %1").arg(additionalComments);
                            }
                     
                            QMessageBox::StandardButton button=QMessageBox::information(this, tr("FET information"), s, QMessageBox::Yes|QMessageBox::No);
                            
                            if(button==QMessageBox::Yes){
                                   bool tds=QDesktopServices::openUrl(QUrl("http://lalescu.ro/liviu/fet/"));
                                   if(!tds){
                                          QMessageBox::warning(this, tr("FET warning"), tr("Could not start the default Internet browser (trying to open the link %1)."
                                                 " Maybe you can try to manually start your browser and open this link.").arg("http://lalescu.ro/liviu/fet/"));
                                   }
                            }
                     }
              }
       }

       networkReply->deleteLater();
}

Here is the caller graph for this function:

void FetMainForm::setCurrentFile ( const QString &  fileName) [private]

Definition at line 789 of file fetmainform.cpp.

{
       QString currentFile=fileName;
       QString shownName=QString("Untitled");
       
       if(!currentFile.isEmpty()){
              shownName=strippedName(currentFile);
              recentFiles.removeAll(currentFile);
              recentFiles.prepend(currentFile);
              if(recentFiles.count()>MAX_RECENT_FILES){
                     assert(recentFiles.count()==MAX_RECENT_FILES+1);
                     assert(!recentFiles.isEmpty());
                     recentFiles.removeLast();
              }
              updateRecentFileActions();
       }
       
       setWindowTitle(tr("%1[*] - FET", "The title of the main window, %1 is the name of the current file. "
        "Please keep the string [*] unmodified (three characters) - it is used to make the difference between modified files and unmodified files.")
        .arg(shownName));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void FetMainForm::setEnabledIcon ( QAction *  action,
bool  enabled 
) [private]

Definition at line 572 of file fetmainform.cpp.

{
       static QIcon locked(":/images/locked.png");
       static QIcon unlocked(":/images/unlocked.png");
       
       if(enabled)
              action->setIcon(unlocked);
       else
              action->setIcon(locked);
}

Here is the caller graph for this function:

Definition at line 3896 of file fetmainform.cpp.

{
       if(checked==false){
              QString s=tr("It is recommended to keep this warning active, but if you really want, you can disable it.");
              s+="\n\n";
              s+=tr("Disable it only if you know what you are doing.");
              s+="\n\n";
              s+=tr("Are you sure you want to disable it?");
       
              QMessageBox::StandardButton b=QMessageBox::warning(this, tr("FET warning"), s, QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Yes);
       
              if(b!=QMessageBox::Yes){
                     disconnect(showWarningForNotPerfectConstraintsAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForNotPerfectConstraintsToggled(bool)));
                     showWarningForNotPerfectConstraintsAction->setChecked(true);
                     connect(showWarningForNotPerfectConstraintsAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForNotPerfectConstraintsToggled(bool)));
                     return;
              }
       }
       
       SHOW_WARNING_FOR_NOT_PERFECT_CONSTRAINTS=checked;
}

Here is the caller graph for this function:

Definition at line 3945 of file fetmainform.cpp.

{
       if(checked==false){
              QString s=tr("It is recommended to keep this warning active, but if you really want, you can disable it.");
              s+="\n\n";
              s+=tr("Disable it only if you know what you are doing.");
              s+="\n\n";
              s+=tr("Are you sure you want to disable it?");
       
              QMessageBox::StandardButton b=QMessageBox::warning(this, tr("FET warning"), s, QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Yes);
       
              if(b!=QMessageBox::Yes){
                     disconnect(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));
                     showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction->setChecked(true);
                     connect(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysAction, SIGNAL(toggled(bool)), this, SLOT(showWarningForStudentsMinHoursDailyWithAllowEmptyDaysToggled(bool)));
                     return;
              }
       }
       
       SHOW_WARNING_FOR_STUDENTS_MIN_HOURS_DAILY_WITH_ALLOW_EMPTY_DAYS=checked;
}

Here is the caller graph for this function:

QString FetMainForm::strippedName ( const QString &  fullFileName) [private]

Definition at line 784 of file fetmainform.cpp.

{
       return QFileInfo(fullFileName).fileName();
}

Here is the caller graph for this function:

Definition at line 811 of file fetmainform.cpp.

{
       QMutableStringListIterator i(recentFiles);
       while(i.hasNext()){
              if(!QFile::exists(i.next()))
                     i.remove();
       }
       
       for(int j=0; j<MAX_RECENT_FILES; j++){
              if(j<recentFiles.count()){
                     QString text=strippedName(recentFiles[j]);
                     recentFileActions[j]->setText(text);
                     recentFileActions[j]->setData(recentFiles[j]);
                     recentFileActions[j]->setVisible(true);
              }
              else{
                     recentFileActions[j]->setVisible(false);
              }
       }
       
       recentSeparatorAction->setVisible(!recentFiles.isEmpty());
}

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 76 of file fetmainform.h.

QNetworkAccessManager* FetMainForm::networkManager [private]

Definition at line 83 of file fetmainform.h.

Definition at line 87 of file fetmainform.h.

QStringList FetMainForm::recentFiles [private]

Definition at line 85 of file fetmainform.h.

Definition at line 88 of file fetmainform.h.

Definition at line 81 of file fetmainform.h.

Definition at line 78 of file fetmainform.h.

Definition at line 80 of file fetmainform.h.

Definition at line 79 of file fetmainform.h.


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