00001 #include <QLabel>
00002 #include <QHeaderView>
00003 #include <QSortFilterProxyModel>
00004 #include <QSplitter>
00005 #include <QUndoStack>
00006 #include <QCloseEvent>
00007 #include <QVBoxLayout>
00008
00009 #include "costunitchild.h"
00010 #include "../Data/project.h"
00011 #include "../Data/datadefinitions.h"
00012 #include "../Data/settings.h"
00013
00014 CostUnitChild::CostUnitChild(Settings &set) : ChildWindow()
00015 {
00016 setType(WindowType::CostUnit);
00017 settings = &set;
00018 }
00019
00020 void CostUnitChild::setModel(CostUnitModel *model)
00021 {
00022 table = model;
00023 }
00024
00025 bool CostUnitChild::loadDocument(const QDomElement fileName)
00026 {
00027 table->loadDocument(fileName);
00028 tableView->resizeColumnToContents(0);
00029 return true;
00030 }
00031
00032 void CostUnitChild::newFile()
00033 {
00034 labelCostUnit = new QLabel(this);
00035 labelCostUnit->setFixedHeight(20);
00036 labelCostUnit->setAlignment(Qt::AlignHCenter);
00037 QFont font;
00038 font.setBold(true);
00039 font.setPointSize(14);
00040 labelCostUnit->setFont(font);
00041
00042 qDebug()<<"heading of the costunit window get's set wrong when opening through the documentchooser :-(";
00043 if(table)
00044 {
00045 setTitle(table->fileName());
00046 }
00047 setWindowTitle(table->fileName());
00048
00049 filterModel = new QSortFilterProxyModel(this);
00050 filterModel->setSourceModel(table);
00051 filterModel->setDynamicSortFilter(true);
00052
00053 tableView = new QTableView;
00054 tableView->setModel(filterModel);
00055 tableView->setSortingEnabled(false);
00056 tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
00057 tableView->horizontalHeader()->setStretchLastSection(true);
00058 tableView->verticalHeader()->hide();
00059 tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
00060 tableView->setSelectionMode(QAbstractItemView::SingleSelection);
00061
00062 QVBoxLayout *vbox = new QVBoxLayout();
00063 pieChart = new PieChartView(settings, this);
00064 pieChart->setModel(table);
00065
00066 QSplitter *splitter = new QSplitter;
00067 splitter->addWidget(tableView);
00068 splitter->addWidget(pieChart);
00069
00070 tableView->resizeColumnToContents(0);
00071
00072 vbox->addWidget(labelCostUnit);
00073 vbox->addWidget(splitter);
00074
00075 setLayout(vbox);
00076 }
00077
00078 void CostUnitChild::closeEvent(QCloseEvent *event)
00079 {
00080 if(maybeSave()!=false)
00081 {
00082 event->accept();
00083 }
00084 else
00085 {
00086 event->ignore();
00087 }
00088 }
00089
00090 void CostUnitChild::setAdditionalCharges(QList<int> data)
00091 {
00092 table->setAdditionalCharges(data);
00093 }
00094
00095 bool CostUnitChild::maybeSave()
00096 {
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 return true;
00113 }
00114
00115 void CostUnitChild::setProduct(QString textProductName, QString textDirectCosts, QString textMarkup, QString textCommission, QString textTradeDiscount, QString textDiscount, QString textSalesTax)
00116 {
00117 qDebug()<<"setting product for: " << "fileid: " << table->fileId() << " fileName: " << table->fileName() << " type: " << table->type() << "model: " << table;
00118
00119 clear();
00120 setTitle(textProductName);
00121 table->setProduct(textProductName, textDirectCosts, textMarkup, textCommission, textTradeDiscount, textDiscount, textSalesTax);
00122 tableView->resizeColumnToContents(0);
00123 }
00124
00125 void CostUnitChild::setProduct(CostUnitProduct *product)
00126 {
00127 setProduct(product->productName(), QString::number(product->directCosts()), QString::number(product->markup()), QString::number(product->commission()), QString::number(product->tradeDiscount()), QString::number(product->discount()), QString::number(product->salesTax()));
00128 }
00129
00130 void CostUnitChild::setTitle(QString n)
00131 {
00132 labelCostUnit->setText(n);
00133 }
00134
00135 void CostUnitChild::clear()
00136 {
00137 labelCostUnit->setText("");
00138 table->clear();
00139 }