plasma: limit everything that calculator applet displays

after testing it with significant digits rounding it turned out it displays
undesirable results tho so the feature to increment/decrement was dropped

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-05-06 01:54:10 +03:00
parent 89773cc69c
commit aacbd1dbdd
2 changed files with 31 additions and 36 deletions

View file

@ -27,19 +27,26 @@
#include <KDebug>
static const QString s_decimal = QString::fromLatin1(".");
static const QLatin1String s_zero = QLatin1String("0");
static const QString s_zero = QString::fromLatin1("0");
// hard-limit
static const int s_limit = 6;
static const int s_limit = 9;
static QString kLimitNumber(const QString &string)
{
return string.mid(0, s_limit);
}
static QString kDoubleNumber(const float number)
{
return QString::number(number, 'g', s_limit);
}
static QString kAddNumber(const QString &string, const short number)
{
if (string.size() > s_limit) {
return string;
}
if (string == s_zero) {
return QString::number(number);
}
return string + QString::number(number);
return kLimitNumber(string + QString::number(number));
}
static QFont kLabelFont()
@ -110,7 +117,7 @@ private:
Plasma::PushButton* m_equalbutton;
Plasma::PushButton* m_0button;
Plasma::PushButton* m_decbutton;
qreal m_savednumber;
double m_savednumber;
CalculatorOperator m_operator;
};
@ -150,7 +157,7 @@ CalculatorAppletWidget::CalculatorAppletWidget(QGraphicsWidget *parent)
m_framelayout = new QGraphicsLinearLayout(Qt::Horizontal, m_frame);
m_label = new Plasma::Label(m_frame);
m_label->setFont(kLabelFont());
m_label->setText(QString::fromLatin1("0"));
m_label->setText(s_zero);
m_label->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_framelayout->addItem(m_label);
@ -273,7 +280,7 @@ CalculatorAppletWidget::CalculatorAppletWidget(QGraphicsWidget *parent)
m_layout->addItem(m_equalbutton, 4, 3, 2, 1);
m_0button = new Plasma::PushButton(this);
m_0button->setText(QString::fromLatin1("0"));
m_0button->setText(s_zero);
connect(
m_0button, SIGNAL(released()),
this, SLOT(slot0())
@ -299,12 +306,12 @@ CalculatorAppletWidget::CalculatorAppletWidget(QGraphicsWidget *parent)
void CalculatorAppletWidget::addToNumber(const short number)
{
m_label->setText(QString::number(m_label->text().toFloat() + number));
m_label->setText(kLimitNumber(kDoubleNumber(m_label->text().toDouble() + number)));
}
void CalculatorAppletWidget::slotClear()
{
m_label->setText(QString::fromLatin1("0"));
m_label->setText(s_zero);
}
void CalculatorAppletWidget::slotDiv()
@ -312,7 +319,7 @@ void CalculatorAppletWidget::slotDiv()
if (m_label->text() == s_zero) {
return;
}
m_savednumber = m_label->text().toFloat();
m_savednumber = m_label->text().toDouble();
m_operator = CalculatorAppletWidget::OperatorDiv;
slotClear();
}
@ -322,7 +329,7 @@ void CalculatorAppletWidget::slotMul()
if (m_label->text() == s_zero) {
return;
}
m_savednumber = m_label->text().toFloat();
m_savednumber = m_label->text().toDouble();
m_operator = CalculatorAppletWidget::OperatorMul;
slotClear();
}
@ -331,7 +338,7 @@ void CalculatorAppletWidget::slotClearAll()
{
m_savednumber = 0.0;
m_operator = CalculatorAppletWidget::OperatorNone;
m_label->setText(QString::fromLatin1("0"));
m_label->setText(s_zero);
}
void CalculatorAppletWidget::slot7()
@ -354,7 +361,7 @@ void CalculatorAppletWidget::slotMinus()
if (m_label->text() == s_zero) {
return;
}
m_savednumber = m_label->text().toFloat();
m_savednumber = m_label->text().toDouble();
m_operator = CalculatorAppletWidget::OperatorMinus;
slotClear();
}
@ -379,7 +386,7 @@ void CalculatorAppletWidget::slotPlus()
if (m_label->text() == s_zero) {
return;
}
m_savednumber = m_label->text().toFloat();
m_savednumber = m_label->text().toDouble();
m_operator = CalculatorAppletWidget::OperatorPlus;
slotClear();
}
@ -406,26 +413,26 @@ void CalculatorAppletWidget::slotEqual()
break;
}
case CalculatorAppletWidget::OperatorDiv: {
const qreal currentnumber = m_label->text().toFloat();
m_label->setText(QString::number(m_savednumber / currentnumber));
const double currentnumber = m_label->text().toDouble();
m_label->setText(kLimitNumber(kDoubleNumber(m_savednumber / currentnumber)));
m_operator = CalculatorAppletWidget::OperatorNone;
break;
}
case CalculatorAppletWidget::OperatorMul: {
const qreal currentnumber = m_label->text().toFloat();
m_label->setText(QString::number(m_savednumber * currentnumber));
const double currentnumber = m_label->text().toDouble();
m_label->setText(kLimitNumber(kDoubleNumber(m_savednumber * currentnumber)));
m_operator = CalculatorAppletWidget::OperatorNone;
break;
}
case CalculatorAppletWidget::OperatorMinus: {
const qreal currentnumber = m_label->text().toFloat();
m_label->setText(QString::number(m_savednumber - currentnumber));
const double currentnumber = m_label->text().toDouble();
m_label->setText(kLimitNumber(kDoubleNumber(m_savednumber - currentnumber)));
m_operator = CalculatorAppletWidget::OperatorNone;
break;
}
case CalculatorAppletWidget::OperatorPlus: {
const qreal currentnumber = m_label->text().toFloat();
m_label->setText(QString::number(m_savednumber + currentnumber));
const double currentnumber = m_label->text().toDouble();
m_label->setText(kLimitNumber(kDoubleNumber(m_savednumber + currentnumber)));
m_operator = CalculatorAppletWidget::OperatorNone;
break;
}
@ -581,15 +588,5 @@ void CalculatorApplet::keyPressEvent(QKeyEvent *event)
}
}
void CalculatorApplet::wheelEvent(QGraphicsSceneWheelEvent *event)
{
event->ignore();
if (event->delta() > 0) {
m_calculatorwidget->addToNumber(1);
} else {
m_calculatorwidget->addToNumber(-1);
}
}
#include "moc_calculator.cpp"
#include "calculator.moc"

View file

@ -19,7 +19,6 @@
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include <QGraphicsSceneWheelEvent>
#include <Plasma/PopupApplet>
class CalculatorAppletWidget;
@ -37,7 +36,6 @@ public:
protected:
// QGraphicsWidget reimplementations
void keyPressEvent(QKeyEvent *event) final;
void wheelEvent(QGraphicsSceneWheelEvent *event) final;
private:
friend CalculatorAppletWidget;