00001 #include "managepositionsdialog.h"
00002 #include "editpositionsdialog.h"
00003
00004 ManagePositionsDialog::ManagePositionsDialog(CostPositionModel *m, QWidget *parent) : QDialog(parent)
00005 {
00006 setupUi(this);
00007 setAttribute(Qt::WA_DeleteOnClose, true);
00008
00009 createControls();
00010
00011 model = m;
00012 loadPositions();
00013 }
00014 void ManagePositionsDialog::createControls()
00015 {
00016 connect(buttonAddPositions, SIGNAL(clicked()), this, SLOT(addPosition()));
00017 connect(buttonEditPositions, SIGNAL(clicked()), this, SLOT(editPosition()));
00018 connect(buttonDeletePositions, SIGNAL(clicked()), this, SLOT(deletePosition()));
00019 connect(treePositions, SIGNAL(pressed(QModelIndex)), this, SLOT(enableButton(QModelIndex)));
00020 connect(treePositions, SIGNAL(pressed(QModelIndex)), this, SLOT(isPosition(QModelIndex)));
00021 }
00022
00023 void ManagePositionsDialog::addPosition()
00024 {
00025 EditPositionsDialog *dialog = new EditPositionsDialog(model, "", "", true, this);
00026 dialog->changeForEdit(false);
00027 dialog->show();
00028 }
00029
00030 void ManagePositionsDialog::deletePosition()
00031 {
00032 if(isposition)
00033 {
00034 model->deletePosition(treePositions->currentIndex().data().toString(), model->getSectionId(treePositions->currentIndex().parent().data().toString()));
00035 }
00036 else
00037 {
00038 model->deleteCategory(model->getSectionId(treePositions->currentIndex().data().toString()));
00039 }
00040 }
00041
00042 void ManagePositionsDialog::loadPositions()
00043 {
00044 treePositions->setModel(model);
00045 }
00046
00047 void ManagePositionsDialog::enableButton(QModelIndex now)
00048 {
00049 QString positionName = now.data().toString();
00050 QString categoryName = now.parent().data().toString();
00051
00052 buttonEditPositions->setEnabled(false);
00053 buttonDeletePositions->setEnabled(false);
00054
00055 if(categoryName != "")
00056 {
00057 if(model->isPositionEditable(positionName, model->getSectionId(categoryName)))
00058 {
00059 buttonEditPositions->setEnabled(true);
00060 buttonDeletePositions->setEnabled(true);
00061 }
00062 }
00063 else
00064 {
00065 if(model->isCategoryEditable(model->getSectionId(positionName)))
00066 {
00067 buttonEditPositions->setEnabled(true);
00068 buttonDeletePositions->setEnabled(true);
00069 }
00070 }
00071
00072 }
00073 void ManagePositionsDialog::isPosition(QModelIndex now)
00074 {
00075 if(now.parent().data().toString() == "")
00076 {
00077 isposition = false;
00078 }
00079 else
00080 {
00081 isposition = true;
00082 }
00083 }
00084
00085 void ManagePositionsDialog::editPosition()
00086 {
00087 QModelIndex index = treePositions->currentIndex();
00088 QModelIndex index2 = index.parent();
00089 if(index2.data().toString() != "")
00090 {
00091 if(model->isCategoryEditable(model->getSectionId(index2.data().toString())) && model->isPositionEditable(index.data().toString(), model->getSectionId(index2.data().toString())))
00092 {
00093 EditPositionsDialog *dialog = new EditPositionsDialog(model, index.data().toString(), index2.data().toString(), true, this);
00094 dialog->changeForEdit(true);
00095 dialog->setWindowTitle(tr("Kostenposition ändern"));
00096 CostPositionItem *item = model->getCostPositionItem(index.data().toString(), index2.data().toString());
00097 dialog->setOldPositionName(item->data(0).toString());
00098 dialog->setOldActionId(item->data(1).toMap().value("action").toInt());
00099 dialog->setOldCosttype(item->data(1).toMap().value("costtype").toInt());
00100 dialog->setOld();
00101 dialog->show();
00102 }
00103 else
00104 {
00105 QMessageBox::information(this, tr("Fehler"), tr("Diese Position ist leider nicht editierbar"));
00106 }
00107 }
00108 else
00109 {
00110 if(model->isCategoryEditable(model->getSectionId(index.data().toString())))
00111 {
00112 EditPositionsDialog *dialog = new EditPositionsDialog(model, "", index.data().toString(), false, this);
00113 dialog->changeForEdit(true);
00114 dialog->setWindowTitle(tr("Kategorie ändern"));
00115 dialog->show();
00116 }
00117 }
00118
00119 }
00120
00121
00122
00123 void ManagePositionsDialog::ok()
00124 {
00125 done(0);
00126 }
00127
00128 void ManagePositionsDialog::cancel()
00129 {
00130 done(1);
00131 }