Files

73 lines
2.1 KiB
C++
Raw Permalink Normal View History

2026-07-09 09:17:30 +00:00
#include "MainWindow.h"
#include <QApplication>
#include <QFont>
#include <QFile>
#include <QLabel>
#include <QVBoxLayout>
#include <QCryptographicHash>
#include "../Common/PolicyHelper.h"
#include "../Common/ConfigHelper.h"
static QString readDllVersion(const QString& dllPath)
{
QFile file(dllPath);
if (!file.exists())
return QCoreApplication::translate("MainWindow", "missing");
2026-07-09 09:17:30 +00:00
if (!file.open(QIODevice::ReadOnly))
return QCoreApplication::translate("MainWindow", "unreadable");
2026-07-09 09:17:30 +00:00
QByteArray data = file.read(1024);
file.close();
return QString::fromUtf8(QCryptographicHash::hash(data, QCryptographicHash::Sha256).toHex().left(8));
}
MainWindow::MainWindow(QWidget* parent)
: QWidget(parent)
{
this->setWindowTitle(tr("Marsco Demo MainApp"));
2026-07-09 09:17:30 +00:00
this->resize(600, 400);
QString appVersion = ConfigHelper::instance().getValue("App", "current_version");
if (appVersion.isEmpty())
appVersion = tr("unknown");
2026-07-09 09:17:30 +00:00
QString dllVersion = readDllVersion(QApplication::applicationDirPath() + "/plugins/demo_plugin.dll");
PolicyHelper policy(QApplication::applicationDirPath());
QString policyResult;
if (!policy.loadPolicy("config/version_policy.dat"))
{
policyResult = tr("policy missing");
2026-07-09 09:17:30 +00:00
}
else if (!policy.isValid())
{
policyResult = tr("policy invalid");
2026-07-09 09:17:30 +00:00
}
else if (!policy.isVersionAllowed(appVersion))
{
policyResult = tr("version disabled");
2026-07-09 09:17:30 +00:00
}
else if (policy.isExpired())
{
policyResult = tr("policy expired");
2026-07-09 09:17:30 +00:00
}
else
{
policyResult = tr("policy ok");
2026-07-09 09:17:30 +00:00
}
QVBoxLayout* layout = new QVBoxLayout(this);
QLabel* label = new QLabel(tr("Software Running Successfully\nVersion: %1\nDLL Version: %2\nPolicy: %3")
2026-07-09 09:17:30 +00:00
.arg(appVersion)
.arg(dllVersion)
.arg(policyResult));
QFont font = label->font();
font.setPointSize(14);
label->setFont(font);
label->setAlignment(Qt::AlignCenter);
layout->addWidget(label);
this->setLayout(layout);
}