File indexing completed on 2024-05-12 05:07:59

0001 /*
0002     SPDX-FileCopyrightText: 2014-2015 Christian Dávid <christian-david@web.de>
0003     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kmymoneyvalidationfeedback.h"
0008 #include "ui_kmymoneyvalidationfeedback.h"
0009 
0010 #include <QIcon>
0011 #include "icons/icons.h"
0012 #include "widgetenums.h"
0013 
0014 using namespace eWidgets;
0015 using namespace Icons;
0016 
0017 class KMyMoneyValidationFeedbackPrivate
0018 {
0019     Q_DISABLE_COPY(KMyMoneyValidationFeedbackPrivate)
0020 
0021 public:
0022     KMyMoneyValidationFeedbackPrivate() :
0023         ui(new Ui::KMyMoneyValidationFeedback),
0024         type(ValidationFeedback::MessageType::None)
0025     {
0026     }
0027 
0028     ~KMyMoneyValidationFeedbackPrivate()
0029     {
0030         delete ui;
0031     }
0032 
0033     Ui::KMyMoneyValidationFeedback *ui;
0034     ValidationFeedback::MessageType type;
0035 };
0036 
0037 KMyMoneyValidationFeedback::KMyMoneyValidationFeedback(QWidget *parent) :
0038     QWidget(parent),
0039     d_ptr(new KMyMoneyValidationFeedbackPrivate)
0040 {
0041     Q_D(KMyMoneyValidationFeedback);
0042     d->ui->setupUi(this);
0043     setHidden(true);
0044     QSizePolicy newSizePolicy = sizePolicy();
0045     newSizePolicy.setControlType(QSizePolicy::Label);
0046     newSizePolicy.setHorizontalPolicy(QSizePolicy::MinimumExpanding);
0047     newSizePolicy.setVerticalPolicy(QSizePolicy::Fixed);
0048     setSizePolicy(newSizePolicy);
0049 }
0050 
0051 KMyMoneyValidationFeedback::~KMyMoneyValidationFeedback()
0052 {
0053     Q_D(KMyMoneyValidationFeedback);
0054     delete d;
0055 }
0056 
0057 /**
0058  * @todo Set icon size according to text size
0059  */
0060 void KMyMoneyValidationFeedback::setFeedback(ValidationFeedback::MessageType type, QString message)
0061 {
0062     Q_D(KMyMoneyValidationFeedback);
0063     d->type = type;
0064 
0065     if (type == ValidationFeedback::MessageType::None) {
0066         if (message.isEmpty() || message == d->ui->label->text())
0067             setHidden(true);
0068     } else {
0069         setHidden(false);
0070         d->ui->label->setText(message);
0071         QIcon icon;
0072         switch (type) {
0073         case ValidationFeedback::MessageType::Error:
0074             icon = Icons::get(Icon::DialogError);
0075             break;
0076         case ValidationFeedback::MessageType::Positive:
0077         case ValidationFeedback::MessageType::Information:
0078             icon = Icons::get(Icon::DialogInformation);
0079             break;
0080         case ValidationFeedback::MessageType::Warning:
0081         default:
0082             icon = Icons::get(Icon::DialogWarning);
0083         }
0084         d->ui->icon->setPixmap(icon.pixmap(24));
0085     }
0086 }
0087 
0088 void KMyMoneyValidationFeedback::removeFeedback()
0089 {
0090     setHidden(true);
0091 }
0092 
0093 void KMyMoneyValidationFeedback::removeFeedback(ValidationFeedback::MessageType type, QString message)
0094 {
0095     Q_D(KMyMoneyValidationFeedback);
0096     if (d->type == type && d->ui->label->text() == message)
0097         removeFeedback();
0098 }
0099