#ifndef NOTEWINDOW_H
#define NOTEWINDOW_H
#include <QWidget>
#include <QTextEdit>
#include <QPushButton>
#include <QJSEngine>
#include <QCloseEvent>
#include <QSyntaxHighlighter>
#include <QTextCharFormat>
#include <QRegularExpression>
#include "ConfigManager.h"
#include "NetworkManager.h"
class WedgeHighlighter : public QSyntaxHighlighter {
public:
WedgeHighlighter(QTextDocument *parent, const QColor &focusColor, const QColor &highlightColor)
: QSyntaxHighlighter(parent), m_focusColor(focusColor), m_highlightColor(highlightColor) {}
void setColors(const QColor &focusColor, const QColor &highlightColor) {
m_focusColor = focusColor;
m_highlightColor = highlightColor;
rehighlight();
}
protected:
void highlightBlock(const QString &text) override;
private:
QColor m_focusColor;
QColor m_highlightColor;
};
class NoteWindow : public QWidget {
Q_OBJECT
public:
explicit NoteWindow(QWidget *parent = nullptr);
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void closeEvent(QCloseEvent *event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
private slots:
void openSettings();
void updateAppearance();
private:
void setupUi();
void loadData();
void handleIncomingContent(const QString &content);
bool handleCalculation(int key);
void refreshDates();
QString refreshAlarms(const QString &content);
QString getOtcDateResult(int day, QString mon);
QTextEdit *editor;
QPushButton *topBtn;
QPushButton *settingsBtn;
NoteData currentData;
QPoint dragPosition;
QJSEngine mathEngine;
WedgeHighlighter *highlighter;
NetworkManager *networkManager;
bool isInitialized = false;
};
#endif