File indexing completed on 2024-05-12 05:38:19
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 <QMimeData> 0012 0013 class QalculateEngine; 0014 0015 #include <KRunner/AbstractRunner> 0016 #include <KRunner/Action> 0017 0018 /** 0019 * This class evaluates the basic expressions given in the interface. 0020 */ 0021 class CalculatorRunner : public KRunner::AbstractRunner 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 CalculatorRunner(QObject *parent, const KPluginMetaData &metaData); 0027 ~CalculatorRunner() override; 0028 0029 void match(KRunner::RunnerContext &context) override; 0030 0031 protected Q_SLOTS: 0032 void run(const KRunner::RunnerContext &context, const KRunner::QueryMatch &match) override; 0033 QMimeData *mimeDataForMatch(const KRunner::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 const KRunner::Actions m_actions; 0042 };