File indexing completed on 2024-05-05 17:45:01

0001 /*
0002     SPDX-FileCopyrightText: 2007 Barış Metin <baris@pardus.org.tr>
0003     SPDX-FileCopyrightText: 2010 Matteo Agostinelli <agostinelli@gmail.com>
0004     SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-only
0007 */
0008 
0009 #pragma once
0010 
0011 #include <QAction>
0012 #include <QMimeData>
0013 
0014 class QalculateEngine;
0015 
0016 #include <krunner/abstractrunner.h>
0017 
0018 /**
0019  * This class evaluates the basic expressions given in the interface.
0020  */
0021 class CalculatorRunner : public Plasma::AbstractRunner
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     CalculatorRunner(QObject *parent, const KPluginMetaData &metaData, const QVariantList &args);
0027     ~CalculatorRunner() override;
0028 
0029     void match(Plasma::RunnerContext &context) override;
0030 
0031 protected Q_SLOTS:
0032     void run(const Plasma::RunnerContext &context, const Plasma::QueryMatch &match) override;
0033     QMimeData *mimeDataForMatch(const Plasma::QueryMatch &match) override;
0034 
0035 private:
0036     QString calculate(const QString &term, bool *isApproximate, int base, const QString &customBase);
0037     void userFriendlyMultiplication(QString &cmd);
0038     void userFriendlySubstitutions(QString &cmd);
0039 
0040     std::unique_ptr<QalculateEngine> m_engine;
0041     QList<QAction *> m_actions;
0042 };