Settings window #20

Merged
Zacharias-Brohn merged 83 commits from settingsWindow into main 2026-03-06 23:27:24 +01:00
3 changed files with 72 additions and 0 deletions
Showing only changes of commit a2c9ad6e29 - Show all commits
+1
View File
@@ -43,6 +43,7 @@ qml_module(ZShell
imageanalyser.hpp imageanalyser.cpp
requests.hpp requests.cpp
toaster.hpp toaster.cpp
qalculator.hpp qalculator.cpp
LIBRARIES
Qt::Gui
Qt::Quick
+52
View File
@@ -0,0 +1,52 @@
#include "qalculator.hpp"
#include <libqalculate/qalculate.h>
namespace ZShell {
Qalculator::Qalculator(QObject* parent)
: QObject(parent) {
if (!CALCULATOR) {
new Calculator();
CALCULATOR->loadExchangeRates();
CALCULATOR->loadGlobalDefinitions();
CALCULATOR->loadLocalDefinitions();
}
}
QString Qalculator::eval(const QString& expr, bool printExpr) const {
if (expr.isEmpty()) {
return QString();
}
EvaluationOptions eo;
PrintOptions po;
std::string parsed;
std::string result = CALCULATOR->calculateAndPrint(
CALCULATOR->unlocalizeExpression(expr.toStdString(), eo.parse_options), 100, eo, po, &parsed);
std::string error;
while (CALCULATOR->message()) {
if (!CALCULATOR->message()->message().empty()) {
if (CALCULATOR->message()->type() == MESSAGE_ERROR) {
error += "error: ";
} else if (CALCULATOR->message()->type() == MESSAGE_WARNING) {
error += "warning: ";
}
error += CALCULATOR->message()->message();
}
CALCULATOR->nextMessage();
}
if (!error.empty()) {
return QString::fromStdString(error);
}
if (printExpr) {
return QString("%1 = %2").arg(parsed).arg(result);
}
return QString::fromStdString(result);
}
} // namespace ZShell
+19
View File
@@ -0,0 +1,19 @@
#pragma once
#include <qobject.h>
#include <qqmlintegration.h>
namespace ZShell {
class Qalculator : public QObject {
Q_OBJECT
QML_ELEMENT
QML_SINGLETON
public:
explicit Qalculator(QObject* parent = nullptr);
Q_INVOKABLE QString eval(const QString& expr, bool printExpr = true) const;
};
} // namespace ZShell