File indexing completed on 2024-05-19 08:59:32
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file defines classes SKGUnitComboBox. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgunitcombobox.h" 0012 0013 #include <klocalizedstring.h> 0014 0015 #include "skgdocumentbank.h" 0016 #include "skgmainpanel.h" 0017 #include "skgunitvalueobject.h" 0018 0019 SKGUnitComboBox::SKGUnitComboBox(QWidget* iParent): SKGComboBox(iParent), m_document(nullptr), m_fillWhereClause(QStringLiteral("t_type!='I'")) 0020 { 0021 } 0022 0023 SKGUnitComboBox::~SKGUnitComboBox() 0024 { 0025 m_document = nullptr; 0026 } 0027 0028 void SKGUnitComboBox::setDocument(SKGDocumentBank* iDocument) 0029 { 0030 m_document = iDocument; 0031 connect(m_document, &SKGDocument::tableModified, this, &SKGUnitComboBox::dataModified); 0032 dataModified(QLatin1String(""), 0); 0033 } 0034 0035 void SKGUnitComboBox::setWhereClauseCondition(const QString& iCondition) 0036 { 0037 m_fillWhereClause = iCondition; 0038 dataModified(QLatin1String(""), 0); 0039 } 0040 0041 SKGUnitObject SKGUnitComboBox::getUnit() 0042 { 0043 SKGUnitObject unit(m_document); 0044 QString unitName = text(); 0045 if ((m_document != nullptr) && !unitName.isEmpty()) { 0046 SKGError err; 0047 err = unit.setSymbol(unitName); 0048 if (!unit.exist()) { 0049 IFOKDO(err, unit.setName(unitName)) 0050 IFOKDO(err, unit.save()) 0051 0052 SKGUnitValueObject unitVal; 0053 IFOKDO(err, unit.addUnitValue(unitVal)) 0054 IFOKDO(err, unitVal.setDate(QDate::currentDate())) 0055 IFOKDO(err, unitVal.setQuantity(1)) 0056 IFOKDO(err, unitVal.save()) 0057 0058 IFOK(err) m_document->sendMessage(i18nc("An information message", "Unit '%1' has been created", text()), SKGDocument::Positive); 0059 } else { 0060 err = unit.load(); 0061 } 0062 } 0063 return unit; 0064 } 0065 0066 void SKGUnitComboBox::setUnit(const SKGUnitObject& iUnit) 0067 { 0068 if (text() != iUnit.getSymbol()) { 0069 setText(iUnit.getSymbol()); 0070 0071 emit unitChanged(); 0072 } 0073 } 0074 0075 void SKGUnitComboBox::refershList() 0076 { 0077 // Fill comboboxes 0078 if (m_document != nullptr) { 0079 SKGMainPanel::fillWithDistinctValue(QList<QWidget*>() << this, m_document, QStringLiteral("unit"), QStringLiteral("ifnull(t_symbol,t_name)"), m_fillWhereClause); 0080 SKGServices::SKGUnitInfo primary = m_document->getPrimaryUnit(); 0081 if (!primary.Symbol.isEmpty()) { 0082 this->setCurrentIndex(this->findText(primary.Symbol)); 0083 } 0084 } 0085 } 0086 0087 void SKGUnitComboBox::dataModified(const QString& iTableName, int iIdTransaction) 0088 { 0089 Q_UNUSED(iIdTransaction) 0090 0091 // Refresh widgets 0092 if (m_document != nullptr) { 0093 QSqlDatabase* db = m_document->getMainDatabase(); 0094 setEnabled(db != nullptr); 0095 if (db != nullptr && (iTableName == QStringLiteral("unit") || iTableName.isEmpty())) { 0096 refershList(); 0097 } 0098 } 0099 } 0100 0101