00001 #include "teacheractions.h"
00002 #include <QLineEdit>
00003
00004 TeacherActions::TeacherActions(QWidget *parent) : QWidget(parent), model(NULL)
00005 {
00006 setupUi(this);
00007 filter = new ExerciseFilterModel();
00008
00009 editAction = new QAction(exerciseSelectionView);
00010 editAction->setIcon(QIcon(":edit/Edit"));
00011 editAction->setText("Umbenennen");
00012
00013 deleteAction = new QAction(exerciseSelectionView);
00014 deleteAction->setIcon(QIcon(":project/DeleteDocument"));
00015 deleteAction->setText("Löschen");
00016
00017 exerciseSelectionView->addAction(editAction);
00018 exerciseSelectionView->addAction(deleteAction);
00019 exerciseSelectionView->setItemDelegate(new ExerciseDelegate(exerciseSelectionView));
00020
00021 exerciseSelectionView->setContextMenuPolicy(Qt::ActionsContextMenu);
00022 createActions();
00023 }
00024
00025 void TeacherActions::createActions()
00026 {
00027 connect(filterText, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString)));
00028 connect(buttonAddChapter, SIGNAL(clicked()), this, SLOT(addChapter()));
00029 connect(buttonAddExercise, SIGNAL(clicked()), this, SLOT(addExercise()));
00030 connect(editAction, SIGNAL(triggered()), this, SLOT(editTreeItem()));
00031 connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteTreeItem()));
00032 connect(exerciseSelectionView, SIGNAL(clicked(QModelIndex)), this, SIGNAL(createTree(QModelIndex)));
00033 }
00034
00035 void TeacherActions::addChapter()
00036 {
00037 if(model)
00038 {
00039
00040 model->addChapter("", model->maxChapterID());
00041 QModelIndex index = filter->mapFromSource(model->index(model->getRootItem()->childCount() - 1, 0, QModelIndex()));
00042 exerciseSelectionView->scrollTo(index, QAbstractItemView::PositionAtCenter);
00043 exerciseSelectionView->setEditTriggers(QAbstractItemView::CurrentChanged);
00044 exerciseSelectionView->setCurrentIndex(index);
00045 exerciseSelectionView->setEditTriggers(QAbstractItemView::NoEditTriggers);
00046 }
00047 }
00048
00049 void TeacherActions::addExercise()
00050 {
00051 if(model)
00052 {
00053 QModelIndex index = exerciseSelectionView->currentIndex();
00054 if(index.parent().isValid())
00055 {
00056 if(isExercise)
00057 {
00058 emit showErrorMessage(tr("Sie können zu einer Übung keine Übung hinzufügen"));
00059 }
00060 else
00061 {
00062 emit showErrorMessage(tr("Sie können zu einer Aufgabe keine Aufgabe hinzufügen"));
00063 }
00064 }
00065 else if(!index.isValid())
00066 {
00067 if(isExercise)
00068 {
00069 emit showErrorMessage(tr("Sie müssen erst das Kapitel anklicken zu dem Sie eine Übung hinzufügen wollen"));
00070 }
00071 else
00072 {
00073 emit showErrorMessage(tr("Sie müssen erst das Kapitel anklicken zu dem Sie eine Aufgabe hinzufügen wollen"));
00074 }
00075 }
00076 else
00077 {
00078 ExerciseItem *chapter = model->chapterByName(index.data(Qt::DisplayRole).toString());
00079 model->addExercise(index.data(Qt::DisplayRole).toString(), "", chapter->maxExerciseID(), NotCompleted);
00080 exerciseSelectionView->expandAll();
00081
00082 QModelIndex cur = model->index(0,0,QModelIndex());
00083 QModelIndex test;
00084 for(int i = 0; cur.isValid(); i++)
00085 {
00086
00087 QModelIndex ex = model->index(0,0, cur);
00088 for(int j = 0; ex.isValid(); j++)
00089 {
00090
00091 if(ex.data(Qt::DisplayRole).toString() == "")
00092 test = ex;
00093 ex = model->index(j+1,0, cur);
00094 }
00095 cur = model->index(i+1, 0, QModelIndex());
00096 }
00097
00098
00099 index = test;
00100
00101
00102
00103 index = filter->mapFromSource(index);
00104
00105
00106 exerciseSelectionView->scrollTo(index, QAbstractItemView::PositionAtCenter);
00107 exerciseSelectionView->setEditTriggers(QAbstractItemView::CurrentChanged);
00108 exerciseSelectionView->setCurrentIndex(index);
00109 exerciseSelectionView->setEditTriggers(QAbstractItemView::NoEditTriggers);
00110 }
00111 }
00112 }
00113
00114 void TeacherActions::createExercise(DataProject *project)
00115 {
00116 isExercise = true;
00117
00118 p_project = project;
00119 model = new ExerciseModel(true, project);
00120 connect(model, SIGNAL(resetView()), exerciseSelectionView, SLOT(resetView()));
00121 connect(model, SIGNAL(printError(QString)), this, SIGNAL(showErrorMessage(QString)));
00122
00123 model->setTeacher(true);
00124 filter->setSourceModel(model);
00125 filter->setDynamicSortFilter(true);
00126 filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
00127
00128 exerciseSelectionView->expandAll();
00129 exerciseSelectionView->setSortingEnabled(true);
00130 exerciseSelectionView->sortByColumn(0, Qt::AscendingOrder);
00131 exerciseSelectionView->setModel(filter);
00132 }
00133
00134 void TeacherActions::createTask(DataProject *project)
00135 {
00136 isExercise = false;
00137
00138 buttonAddChapter->setText("Aufgeneinheit hinzufügen");
00139 buttonAddExercise->setText("Aufgabe hinzufügen");
00140
00141 groupBox->setTitle("Aufgaben");
00142 this->p_project = project;
00143
00144 model = new ExerciseModel(false, project);
00145 connect(model, SIGNAL(resetView()), exerciseSelectionView, SLOT(resetView()));
00146 connect(model, SIGNAL(printError(QString)), this, SIGNAL(showErrorMessage(QString)));
00147 model->setTeacher(true);
00148
00149 filter->setSourceModel(model);
00150 filter->setDynamicSortFilter(true);
00151 filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
00152
00153 exerciseSelectionView->setSortingEnabled(true);
00154 exerciseSelectionView->sortByColumn(0, Qt::AscendingOrder);
00155 exerciseSelectionView->setModel(filter);
00156 }
00157
00158 void TeacherActions::readExercise(DataProject *project)
00159 {
00160 this->p_project = project;
00161
00162 model = new ExerciseModel(true, project);
00163 connect(model, SIGNAL(resetView()), exerciseSelectionView, SLOT(resetView()));
00164 model->setTeacher(true);
00165 filter->setSourceModel(model);
00166 filter->setDynamicSortFilter(true);
00167 filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
00168 exerciseSelectionView->setModel(filter);
00169 exerciseSelectionView->expandAll();
00170 }
00171
00172 void TeacherActions::readTask(DataProject *project)
00173 {
00174 this->p_project = project;
00175
00176 model = new ExerciseModel(false, project);
00177 connect(model, SIGNAL(resetView()), exerciseSelectionView, SLOT(resetView()));
00178 model->setTeacher(true);
00179 filter->setSourceModel(model);
00180 filter->setDynamicSortFilter(true);
00181 filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
00182 exerciseSelectionView->setModel(filter);
00183 exerciseSelectionView->expandAll();
00184 }
00185
00186 void TeacherActions::editTreeItem()
00187 {
00188 QModelIndex old = exerciseSelectionView->currentIndex();
00189 exerciseSelectionView->setCurrentIndex(QModelIndex());
00190 exerciseSelectionView->setEditTriggers(QAbstractItemView::CurrentChanged);
00191 exerciseSelectionView->setCurrentIndex(old);
00192 exerciseSelectionView->setEditTriggers(QAbstractItemView::NoEditTriggers);
00193 }
00194
00195 void TeacherActions::deleteTreeItem()
00196 {
00197 QModelIndex current = exerciseSelectionView->currentIndex();
00198 if(current.parent().isValid())
00199 {
00200 model->removeExerciseByName(current.parent().data(0).toString(), current.data(0).toString());
00201 }
00202 else
00203 {
00204 model->removeChapterByName(current.data(0).toString());
00205 }
00206 }
00207
00208 TeacherActions::~TeacherActions()
00209 {
00210 if(model)
00211 {
00212 delete model;
00213 }
00214 }