Added experimental flat layout, part I

This commit is contained in:
2025-12-30 00:15:54 +01:00
parent 7fd91d2099
commit 18a922564c
4 changed files with 67 additions and 132 deletions

103
main.cpp
View File

@@ -31,27 +31,10 @@
#include <QApplication>
#include <QMetaEnum>
#include <QFile>
#include <QLabel>
#include <QProgressBar>
// main.cpp
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>
#include <bcmainwindow.h>
#include <bcvalue.h>
#include <bcdatamanager.h>
#include <variant>
#include <string>
#include <QThread>
bool setApplicationStyleSheet( QAnyStringView path )
{
@@ -63,98 +46,14 @@ bool setApplicationStyleSheet( QAnyStringView path )
styleFile.close();
return true;
}
qWarning() << "Konnte Stylesheet nicht laden:" << styleFile.errorString();
return true;
}
struct moo
{
QString moo_str {"irgendwas"};
};
// Verschiedene Datentypen für die Sensoren
struct Temperature : public moo{ float celsius; };
struct CpuLoad : public moo{ int percentage; };
struct Status : public moo{ std::string message; };
// Die Variant als universeller Datencontainer
using SensorReadingPtr = std::variant<Temperature*, CpuLoad*, Status*>;
struct UIUpdateVisitor
{
QLabel* tempLabel;
QProgressBar* cpuBar;
QLabel* statusLabel;
// Überladene operator() für jeden Typ in der Variant
double operator()(Temperature* t) const
{
//tempLabel->setText(QString("Temp: %1°C").arg(t.celsius, 0, 'f', 1));
//tempLabel->setStyleSheet(t.celsius > 40 ? "color: red;" : "color: black;");
return -1;
}
double operator()(CpuLoad* c) const
{
cpuBar->setValue(c->percentage);
qDebug() << c->moo_str;
return -42.0;
}
double operator()(const Status* s) const
{
//statusLabel->setText(QString::fromStdString(s.message));
return -1;
}
};
void onNewDataReceived(const SensorReadingPtr& data)
{
QLabel* labelTemp = nullptr;
QProgressBar* progressCpu = nullptr;
QLabel* labelStatus = nullptr;
// Wir erstellen den Visitor mit Referenzen auf unsere UI-Elemente
UIUpdateVisitor visitor { labelTemp, progressCpu, labelStatus };
// Die Magie: std::visit wählt zur Kompilierzeit die richtige Methode
double result = std::visit(visitor, data);
Q_UNUSED(result)
Temperature myTemp{};
SensorReadingPtr xxx{&myTemp};
double result2 = std::visit(visitor, SensorReadingPtr{&myTemp} );
}
struct mookoo
{
QString a="firz";
int b=2;
double c=1.0;
QString hidden{"Fatz!"};
};
struct mookoo2 : public mookoo
{
int another;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 );
mookoo myMookoo{"",1,1.0};
mookoo myMooko2{"",1};
mookoo2* myMooko3 = new mookoo2{{"superfitze",1},8};
qDebug() << " --- haha: " << myMooko3->a << ": " << myMooko3->hidden;
setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 );
BCMainWindow w;
w.show();