Files
MuditaOS/module-apps/application-calculator/windows/CalculatorMainWindow.hpp
KacperLewandowski c2cd94a6f2 [EGD-4417] Fix operations in calculator
1. Fix possibility to write illogical operations.
2. Fix possibility to write multiple '0' when it is not needed.
3. Add scientific notation when result do not fit on screen.
2021-01-20 21:57:09 +01:00

37 lines
1.1 KiB
C++

// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "windows/AppWindow.hpp"
#include "Application.hpp"
#include "application-calculator/widgets/MathOperationsBox.hpp"
#include <module-gui/gui/widgets/Text.hpp>
#include <module-utils/tinyexpr/tinyexpr.h>
namespace gui
{
class CalculatorMainWindow : public gui::AppWindow
{
gui::Text *mathOperationInput = nullptr;
gui::MathOperationsBox *mathBox = nullptr;
bool clearInput = false;
void writeEquation(bool lastCharIsSymbol, const UTF8 &symbol);
void applyInputCallback();
bool isPreviousNumberDecimal();
bool isSymbol(uint32_t character);
bool isDecimalSeparator(uint32_t character);
uint32_t getPenultimate();
public:
CalculatorMainWindow(app::Application *app, std::string name);
~CalculatorMainWindow() override = default;
void buildInterface() override;
bool onInput(const gui::InputEvent &inputEvent) override;
};
} // namespace gui