File indexing completed on 2024-06-23 05:13:48

0001 /*
0002     SPDX-FileCopyrightText: 2014 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 
0006     This is a copy of KPluralHandlingSpinBox from KTextWidgets.
0007 */
0008 
0009 #include "pluralhandlingspinbox.h"
0010 
0011 class PluralHandlingSpinBoxPrivate
0012 {
0013 public:
0014     PluralHandlingSpinBoxPrivate(QSpinBox *q)
0015         : q(q)
0016     {
0017         QObject::connect(q, &QSpinBox::valueChanged, q, [this](int value) {
0018             updateSuffix(value);
0019         });
0020     }
0021 
0022     void updateSuffix(int value)
0023     {
0024         if (!pluralSuffix.isEmpty()) {
0025             KLocalizedString s = pluralSuffix;
0026             q->setSuffix(s.subs(value).toString());
0027         }
0028     }
0029 
0030     QSpinBox *const q;
0031     KLocalizedString pluralSuffix;
0032 };
0033 
0034 PluralHandlingSpinBox::PluralHandlingSpinBox(QWidget *parent)
0035     : QSpinBox(parent)
0036     , d(new PluralHandlingSpinBoxPrivate(this))
0037 {
0038 }
0039 
0040 PluralHandlingSpinBox::~PluralHandlingSpinBox() = default;
0041 
0042 void PluralHandlingSpinBox::setSuffix(const KLocalizedString &suffix)
0043 {
0044     d->pluralSuffix = suffix;
0045     if (suffix.isEmpty()) {
0046         QSpinBox::setSuffix(QString());
0047     } else {
0048         d->updateSuffix(value());
0049     }
0050 }
0051 
0052 #include "moc_pluralhandlingspinbox.cpp"