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