00001 #include <QLabel>
00002 #include <QHeaderView>
00003 #include <QSplitter>
00004 #include <QUndoStack>
00005 #include <QCloseEvent>
00006 #include <QHBoxLayout>
00007 #include <QVBoxLayout>
00008 #include <QGroupBox>
00009 #include <QPushButton>
00010 #include <QGraphicsView>
00011
00012 #include "pricecomparisonchild.h"
00013 #include "../Dialogs/documentchooser.h"
00014 #include "../Data/project.h"
00015 #include "../Data/datadefinitions.h"
00016 #include "../Data/settings.h"
00017
00018 ChooseProductButton::ChooseProductButton(int id, QString text, QWidget *parent) : QPushButton(text, parent)
00019 {
00020 this->id = id;
00021 connect(this, SIGNAL(clicked()), this, SLOT(clickedWithID()));
00022 }
00023
00024 void ChooseProductButton::setIndex(int gridIndex)
00025 {
00026 id = gridIndex;
00027 }
00028
00029 void ChooseProductButton::clickedWithID()
00030 {
00031 emit clickedInclID(id);
00032 }
00033
00034 PriceComparisonChild::PriceComparisonChild(Settings &set) : ChildWindow()
00035 {
00036 setType(WindowType::PriceComparison);
00037 settings = &set;
00038
00039 grid = new QGridLayout();
00040 setLayout(grid);
00041
00042 setWindowTitle(tr("Preis Vergleich"));
00043
00044
00045
00046
00047
00048 createProductComparisonView();
00049 }
00050
00051 void PriceComparisonChild::setDocumentInfoModel(AbstractModel *model)
00052 {
00053 fileInfo = model;
00054 setWindowTitle(model->fileName());
00055 }
00056
00057 void PriceComparisonChild::setModelList(DocumentChooserModel *m)
00058 {
00059 modelList = m;
00060 }
00061
00062 QDomElement PriceComparisonChild::saveDocumentNodes()
00063 {
00064 return QDomElement();
00065 }
00066
00067 bool PriceComparisonChild::loadDocument(const QDomElement fileName)
00068 {
00069 return true;
00070 }
00071
00072 void PriceComparisonChild::createProductComparisonView()
00073 {
00074
00075
00076 uint countHorizontal = 0;
00077 uint countVertical = 0;
00078
00079 uint columns = 3;
00080 uint rows = 2;
00081 uint totalCount = columns * rows;
00082
00083 for(uint i = 0; i < totalCount; i++)
00084 {
00085 QGroupBox *box = new QGroupBox(this);
00086 QVBoxLayout *vbox = new QVBoxLayout();
00087
00088 QLabel *labelCostUnit = new QLabel(box);
00089 labelCostUnit->setFixedHeight(16);
00090 labelCostUnit->setAlignment(Qt::AlignHCenter);
00091 QFont font;
00092 font.setBold(true);
00093 font.setPointSize(11);
00094 labelCostUnit->setFont(font);
00095 labelCostUnit->hide();
00096
00097 ChooseProductButton *buttonChooseProduct = new ChooseProductButton(-1, "Produkt auswählen", box);
00098 connect(buttonChooseProduct, SIGNAL(clickedInclID(int)), this, SLOT(chooseProductDialog(int)));
00099
00100 PieChartView *piechart = new PieChartView(settings, this);
00101 QTableView *table = new QTableView();
00102 piechart->hide();
00103 table->hide();
00104
00105 vbox->addWidget(labelCostUnit);
00106 vbox->addWidget(buttonChooseProduct);
00107 vbox->addWidget(piechart);
00108 vbox->addWidget(table);
00109
00110 box->setLayout(vbox);
00111 grid->addWidget(box, countVertical, countHorizontal);
00112
00113
00114 buttonChooseProduct->setIndex(grid->indexOf(box));
00115
00116 countHorizontal++;
00117 if(countHorizontal % columns == 0)
00118 {
00119
00120 countVertical++;
00121 countHorizontal = 0;
00122 }
00123 }
00124 }
00125
00126 void PriceComparisonChild::chooseProductDialog(int id)
00127 {
00128 DocumentChooser *chooser = new DocumentChooser(WindowType::CostUnit, id, fileInfo->fileName(), QDomElement(), modelList, this);
00129 chooser->show();
00130 connect(chooser, SIGNAL(documentSelected(DocumentItem, int, QString, QDomElement)), this, SLOT(documentSelected(DocumentItem, int, QString, QDomElement)));
00131 }
00132
00133 void PriceComparisonChild::documentSelected(DocumentItem callByValueItem, int id, QString name, QDomElement file)
00134 {
00135 DocumentItem *item = referenceFromItem(callByValueItem);
00136 if(item != NULL)
00137 {
00138 QLayoutItem *layoutItem = grid->itemAt(id);
00139 if(layoutItem != NULL)
00140 {
00141 qDebug()<<"Item is NOT null!";
00142 QGroupBox *box = (QGroupBox*)layoutItem->widget();
00143 QVBoxLayout *layout = (QVBoxLayout*)box->layout();
00144 layout->itemAt(0)->widget()->show();
00145 layout->itemAt(1)->widget()->show();
00146 layout->itemAt(2)->widget()->show();
00147 layout->itemAt(3)->widget()->show();
00148
00149 qDebug()<<"FIXME: check should be added here if conversion is valid";
00150 CostUnitModel *model = (CostUnitModel*)(item->model());
00151
00152 qDebug()<<"before label";
00153 ((QLabel*)(layout->itemAt(0)->widget()))->setText(model->fileName());
00154 qDebug()<<"before piechart";
00155 ((PieChartView*)(layout->itemAt(2)->widget()))->setModel(model);
00156 qDebug()<<"before tableview";
00157 ((QTableView*)(layout->itemAt(3)->widget()))->setModel(model);
00158 qDebug()<<"after tableview";
00159 }
00160 }
00161 }
00162
00163 DocumentItem* PriceComparisonChild::referenceFromItem(DocumentItem callByValueItem)
00164 {
00165
00166
00167 AbstractModel *model = callByValueItem.model();
00168 if(model->fileId() != -1 && model->fileName() != "" && model->type() != -1)
00169 {
00170
00171 return modelList->documentItem(model->fileId(), model->type());
00172 }
00173 else
00174 {
00175 return NULL;
00176 }
00177 }
00178
00179 void PriceComparisonChild::recalculateShownProducts()
00180 {
00181
00182 }
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207 void PriceComparisonChild::closeEvent(QCloseEvent *event)
00208 {
00209 if(maybeSave()!=false)
00210 {
00211 event->accept();
00212 }
00213 else
00214 {
00215 event->ignore();
00216 }
00217 }
00218
00219 bool PriceComparisonChild::maybeSave()
00220 {
00221 return true;
00222 }