582 { |
582 { |
583 double left = vol_availEdit->value(); |
583 double left = vol_availEdit->value(); |
584 |
584 |
585 qDebug() << "split_show" << product->splits.size(); |
585 qDebug() << "split_show" << product->splits.size(); |
586 const QSignalBlocker blocker1(splitTable); |
586 const QSignalBlocker blocker1(splitTable); |
587 split_delButton->setEnabled(product->splits.size() > 0); |
587 |
|
588 if (product->divide_type == 0) { |
|
589 split_addButton->setEnabled(false); |
|
590 split_addButton->setToolTip(""); |
|
591 } else { |
|
592 split_addButton->setEnabled(true); |
|
593 split_addButton->setToolTip(tr("Add a splitted batch")); |
|
594 } |
|
595 |
|
596 if (product->splits.size() == 0) { |
|
597 splitatEdit->setEnabled(true); |
|
598 splitatEdit->setToolTip(tr("Choose split moment in the brew process")); |
|
599 split_delButton->setEnabled(false); |
|
600 split_delButton->setToolTip(tr("")); |
|
601 } else { |
|
602 splitatEdit->setEnabled(false); |
|
603 splitatEdit->setToolTip(""); |
|
604 split_delButton->setEnabled(true); |
|
605 split_delButton->setToolTip(tr("Delete the last splitted batch")); |
|
606 } |
588 |
607 |
589 for (int i = 0; i < product->splits.size(); i++) { |
608 for (int i = 0; i < product->splits.size(); i++) { |
590 |
609 |
591 qDebug() << i << product->splits.at(i).code << product->splits.at(i).name << QString::number(product->splits.at(i).size); |
610 qDebug() << i << product->splits.at(i).code << product->splits.at(i).name << QString::number(product->splits.at(i).size); |
592 splitTable->setItem(i, 0, new QTableWidgetItem(product->splits.at(i).code)); |
611 |
593 splitTable->setItem(i, 1, new QTableWidgetItem(product->splits.at(i).name)); |
612 QTableWidgetItem *item = new QTableWidgetItem(product->splits.at(i).code); |
594 splitTable->setItem(i, 2, new QTableWidgetItem(QString::number(product->splits.at(i).size, 'f', 1))); |
613 item->setFlags(item->flags() ^ Qt::ItemIsEditable); |
|
614 item->setToolTip(tr("The read-only `product code` of the batch")); |
|
615 splitTable->setItem(i, 0, item); |
|
616 |
|
617 item = new QTableWidgetItem(product->splits.at(i).name); |
|
618 item->setToolTip(tr("Batch name, click to change the name")); |
|
619 splitTable->setItem(i, 1, item); |
|
620 |
|
621 item = new QTableWidgetItem(QString::number(product->splits.at(i).size, 'f', 2)); |
|
622 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
|
623 item->setToolTip(tr("Batch size, click to change the volume")); |
|
624 splitTable->setItem(i, 2, item); |
595 left -= product->splits.at(i).size; |
625 left -= product->splits.at(i).size; |
596 } |
626 } |
597 |
627 |
598 if (left < 0) |
628 if (left < 0) |
599 left = 0; |
629 left = 0; |
647 break; |
677 break; |
648 case 6: vol_availEdit->setValue(product->package_volume); |
678 case 6: vol_availEdit->setValue(product->package_volume); |
649 break; |
679 break; |
650 } |
680 } |
651 product->divide_type = val; |
681 product->divide_type = val; |
652 split_addButton->setEnabled(product->divide_type != 0); |
|
653 split_show(); |
682 split_show(); |
654 } |
683 } |
655 |
684 |
656 |
685 |
657 void EditProduct::split_table_changed(int nRow, int nCol) |
686 void EditProduct::split_table_changed(int nRow, int nCol) |
658 { |
687 { |
|
688 QTableWidgetItem *item; |
|
689 |
659 qDebug() << "split_table_changed" << nRow << nCol; |
690 qDebug() << "split_table_changed" << nRow << nCol; |
|
691 |
|
692 if (nCol == 1) { |
|
693 /* Split name is changed. */ |
|
694 item = splitTable->item(nRow, nCol); |
|
695 product->splits[nRow].name = item->text(); |
|
696 } |
|
697 if (nCol == 2) { |
|
698 item = splitTable->item(nRow, nCol); |
|
699 double vol = item->text().toDouble(); |
|
700 double room = vol_availEdit->value(); |
|
701 |
|
702 for (int i = 0; i < product->splits.size(); i++) { |
|
703 if (i != nRow) |
|
704 room -= product->splits.at(i).size; |
|
705 } |
|
706 qDebug() << vol << room; |
|
707 if (vol > (room - 1)) { |
|
708 product->splits[nRow].size = room - 1; |
|
709 } else { |
|
710 product->splits[nRow].size = round(vol * 100.0) / 100.0; |
|
711 } |
|
712 } |
660 |
713 |
661 split_show(); |
714 split_show(); |
662 } |
715 } |
663 |
716 |
664 |
717 |
671 this->textIsChanged = false; |
724 this->textIsChanged = false; |
672 } |
725 } |
673 |
726 |
674 QDialog* dialog = new QDialog(this); |
727 QDialog* dialog = new QDialog(this); |
675 dialog->setWindowTitle(tr("Split product")); |
728 dialog->setWindowTitle(tr("Split product")); |
676 |
729 dialog->setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint); |
677 dialog->setObjectName(QString::fromUtf8("SplitDialog")); |
730 dialog->setObjectName(QString::fromUtf8("SplitDialog")); |
678 dialog->resize(1024, 560); |
731 dialog->resize(1024, 560); |
|
732 |
679 QDialogButtonBox *buttonBox = new QDialogButtonBox(dialog); |
733 QDialogButtonBox *buttonBox = new QDialogButtonBox(dialog); |
680 buttonBox->setObjectName(QString::fromUtf8("buttonBox")); |
734 buttonBox->setObjectName(QString::fromUtf8("buttonBox")); |
681 buttonBox->setGeometry(QRect(30, 510, 961, 32)); |
735 buttonBox->setGeometry(QRect(30, 510, 961, 32)); |
682 buttonBox->setOrientation(Qt::Horizontal); |
736 buttonBox->setOrientation(Qt::Horizontal); |
683 buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); |
737 buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); |
684 buttonBox->setCenterButtons(true); |
738 buttonBox->setCenterButtons(true); |
|
739 //buttonBox->button(QDialogButtonBox::Ok)->setDefault(false); |
|
740 //buttonBox->button(QDialogButtonBox::Cancel)->setDefault(false); |
685 QLabel *topLabel = new QLabel(dialog); |
741 QLabel *topLabel = new QLabel(dialog); |
686 topLabel->setObjectName(QString::fromUtf8("topLabel")); |
742 topLabel->setObjectName(QString::fromUtf8("topLabel")); |
687 topLabel->setGeometry(QRect(30, 20, 961, 31)); |
743 topLabel->setGeometry(QRect(30, 20, 961, 31)); |
688 topLabel->setText(tr("Split product")); |
744 topLabel->setText(tr("Split product")); |
689 QFont font; |
745 QFont font; |
735 QLabel *splitatLabel = new QLabel(dialog); |
791 QLabel *splitatLabel = new QLabel(dialog); |
736 splitatLabel->setObjectName(QString::fromUtf8("splitatLabel")); |
792 splitatLabel->setObjectName(QString::fromUtf8("splitatLabel")); |
737 splitatLabel->setGeometry(QRect(660, 110, 141, 20)); |
793 splitatLabel->setGeometry(QRect(660, 110, 141, 20)); |
738 splitatLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
794 splitatLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
739 splitatLabel->setText(tr("Split at moment:")); |
795 splitatLabel->setText(tr("Split at moment:")); |
740 QLabel *vol_leftLabel = new QLabel(dialog); |
|
741 vol_leftLabel->setObjectName(QString::fromUtf8("vol_leftLabel")); |
|
742 vol_leftLabel->setGeometry(QRect(660, 140, 141, 20)); |
|
743 vol_leftLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
|
744 vol_leftLabel->setText(tr("Volume remaining:")); |
|
745 |
|
746 splitatEdit = new QComboBox(dialog); |
796 splitatEdit = new QComboBox(dialog); |
747 splitatEdit->setObjectName(QString::fromUtf8("splitatEdit")); |
797 splitatEdit->setObjectName(QString::fromUtf8("splitatEdit")); |
748 splitatEdit->setGeometry(QRect(810, 110, 181, 23)); |
798 splitatEdit->setGeometry(QRect(810, 110, 181, 23)); |
749 splitatEdit->addItem(tr("Not divided")); |
799 splitatEdit->addItem(tr("Not divided")); |
750 splitatEdit->addItem(tr("After mash")); |
800 splitatEdit->addItem(tr("After mash")); |
767 } |
817 } |
768 if (product->stage > PROD_STAGE_TERTIARY) { |
818 if (product->stage > PROD_STAGE_TERTIARY) { |
769 splitatEdit->setItemData(6, false, Qt::UserRole -1); |
819 splitatEdit->setItemData(6, false, Qt::UserRole -1); |
770 } |
820 } |
771 |
821 |
|
822 QLabel *vol_leftLabel = new QLabel(dialog); |
|
823 vol_leftLabel->setObjectName(QString::fromUtf8("vol_leftLabel")); |
|
824 vol_leftLabel->setGeometry(QRect(660, 140, 141, 20)); |
|
825 vol_leftLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
|
826 vol_leftLabel->setText(tr("Volume remaining:")); |
772 vol_leftEdit = new QDoubleSpinBox(dialog); |
827 vol_leftEdit = new QDoubleSpinBox(dialog); |
773 vol_leftEdit->setObjectName(QString::fromUtf8("vol_leftEdit")); |
828 vol_leftEdit->setObjectName(QString::fromUtf8("vol_leftEdit")); |
774 vol_leftEdit->setGeometry(QRect(810, 140, 111, 24)); |
829 vol_leftEdit->setGeometry(QRect(810, 140, 111, 24)); |
775 vol_leftEdit->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
830 vol_leftEdit->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); |
776 vol_leftEdit->setReadOnly(true); |
831 vol_leftEdit->setReadOnly(true); |
803 split_addButton->setGeometry(QRect(170, 180, 100, 23)); |
858 split_addButton->setGeometry(QRect(170, 180, 100, 23)); |
804 QIcon icon; |
859 QIcon icon; |
805 icon.addFile(QString::fromUtf8("../resources/icons/silk/add.png"), QSize(), QIcon::Normal, QIcon::Off); |
860 icon.addFile(QString::fromUtf8("../resources/icons/silk/add.png"), QSize(), QIcon::Normal, QIcon::Off); |
806 split_addButton->setIcon(icon); |
861 split_addButton->setIcon(icon); |
807 split_addButton->setText(tr("Add")); |
862 split_addButton->setText(tr("Add")); |
808 split_addButton->setEnabled(product->divide_type != 0); |
|
809 |
863 |
810 split_delButton = new QPushButton(dialog); |
864 split_delButton = new QPushButton(dialog); |
811 split_delButton->setObjectName(QString::fromUtf8("delButton")); |
865 split_delButton->setObjectName(QString::fromUtf8("delButton")); |
812 split_delButton->setGeometry(QRect(660, 180, 100, 23)); |
866 split_delButton->setGeometry(QRect(660, 180, 100, 23)); |
813 QIcon icon2; |
867 QIcon icon2; |
814 icon2.addFile(QString::fromUtf8("../resources/icons/silk/delete.png"), QSize(), QIcon::Normal, QIcon::Off); |
868 icon2.addFile(QString::fromUtf8("../resources/icons/silk/delete.png"), QSize(), QIcon::Normal, QIcon::Off); |
815 split_delButton->setIcon(icon2); |
869 split_delButton->setIcon(icon2); |
816 split_delButton->setText(tr("Delete")); |
870 split_delButton->setText(tr("Delete")); |
817 split_delButton->setEnabled(false); |
871 |
818 |
872 split_show(); |
819 QObject::connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept())); |
873 QObject::connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept())); |
820 QObject::connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject())); |
874 QObject::connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject())); |
821 connect(split_addButton, SIGNAL(clicked()), this, SLOT(split_add_clicked())); |
875 connect(split_addButton, SIGNAL(clicked()), this, SLOT(split_add_clicked())); |
822 connect(split_delButton, SIGNAL(clicked()), this, SLOT(split_del_clicked())); |
876 connect(split_delButton, SIGNAL(clicked()), this, SLOT(split_del_clicked())); |
823 connect(splitatEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::split_splitat_changed); |
877 connect(splitatEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::split_splitat_changed); |