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 };