File indexing completed on 2024-05-12 16:43:54
0001 /* 0002 SPDX-FileCopyrightText: 2014 Christian Dávid <christian-david@web.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "payeeidentifierselectiondelegate.h" 0007 0008 #include <KLocalizedString> 0009 0010 #include "models/payeeidentifiercontainermodel.h" 0011 #include "payeeidentifier/ibanbic/ibanbic.h" 0012 #include "payeeidentifier/nationalaccount/nationalaccount.h" 0013 0014 0015 payeeIdentifierTypeSelectionWidget::payeeIdentifierTypeSelectionWidget(QWidget* parent) 0016 : QComboBox(parent) 0017 { 0018 connect(this, SIGNAL(activated(int)), this, SLOT(itemSelected(int))); 0019 } 0020 0021 void payeeIdentifierTypeSelectionWidget::itemSelected(int index) 0022 { 0023 if (index != 0) { 0024 emit commitData(this); 0025 setCurrentIndex(0); 0026 } 0027 } 0028 0029 payeeIdentifierSelectionDelegate::payeeIdentifierSelectionDelegate(QObject* parent) 0030 : QStyledItemDelegate(parent) 0031 { 0032 } 0033 0034 QWidget* payeeIdentifierSelectionDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const 0035 { 0036 Q_UNUSED(option); 0037 Q_UNUSED(index); 0038 0039 payeeIdentifierTypeSelectionWidget* comboBox = new payeeIdentifierTypeSelectionWidget(parent); 0040 comboBox->setFrame(false); 0041 connect(comboBox, SIGNAL(commitData(QWidget*)), this, SIGNAL(commitData(QWidget*))); 0042 0043 comboBox->addItem(i18n("Please select the account number type")); 0044 0045 const QMap<QString, QString> availableDelegates { 0046 {payeeIdentifiers::ibanBic::staticPayeeIdentifierIid(), i18n("IBAN and BIC")}, 0047 {payeeIdentifiers::nationalAccount::staticPayeeIdentifierIid(), i18n("National Account Number")} 0048 }; 0049 0050 for (auto delegate = availableDelegates.cbegin(); delegate != availableDelegates.cend(); ++delegate ) 0051 comboBox->addItem(delegate.value(), delegate.key()); 0052 0053 return comboBox; 0054 } 0055 0056 void payeeIdentifierSelectionDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const 0057 { 0058 QComboBox *const comboBox = qobject_cast<QComboBox*>(editor); 0059 const QString selectedPidType = comboBox->model()->data(comboBox->model()->index(comboBox->currentIndex(), 0), Qt::UserRole).toString(); 0060 payeeIdentifier orig = model->data(index, payeeIdentifierContainerModel::payeeIdentifier).value<payeeIdentifier>(); 0061 0062 payeeIdentifier ident; 0063 if (selectedPidType == payeeIdentifiers::ibanBic::staticPayeeIdentifierIid()) 0064 ident = payeeIdentifier(orig.id(), new payeeIdentifiers::ibanBic()); 0065 else if (selectedPidType == payeeIdentifiers::nationalAccount::staticPayeeIdentifierIid()) 0066 ident = payeeIdentifier(orig.id(), new payeeIdentifiers::nationalAccount()); 0067 0068 model->setData(index, QVariant::fromValue<payeeIdentifier>(ident), payeeIdentifierContainerModel::payeeIdentifier); 0069 } 0070 0071 void payeeIdentifierSelectionDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& /*index*/) const 0072 { 0073 editor->setGeometry(option.rect); 0074 } 0075 0076 QSize payeeIdentifierSelectionDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const 0077 { 0078 return QStyledItemDelegate::sizeHint(option, index); 0079 }