Files
BloomPatched/src/Insight/UserInterfaces/InsightWindow/InsightWindow.hpp

100 lines
3.1 KiB
C++
Raw Normal View History

2021-04-04 21:04:12 +01:00
#pragma once
#include <QtCore>
#include <QMainWindow>
#include <QtUiTools/QtUiTools>
#include <memory>
#include <optional>
#include "AboutWindow.hpp"
#include "src/ApplicationConfig.hpp"
2021-04-04 21:04:12 +01:00
#include "TargetWidgets/TargetPackageWidget.hpp"
#include "src/Targets/TargetState.hpp"
#include "src/Targets/TargetDescriptor.hpp"
#include "src/Targets/TargetVariant.hpp"
namespace Bloom
{
class InsightWindow: public QObject
{
Q_OBJECT
private:
2021-05-30 16:53:24 +01:00
InsightConfig insightConfig;
EnvironmentConfig environmentConfig;
TargetConfig targetConfig;
bool activated = false;
Targets::TargetDescriptor targetDescriptor;
Targets::TargetState targetState = Targets::TargetState::UNKNOWN;
2021-04-04 21:04:12 +01:00
QWidget* mainWindowWidget = nullptr;
AboutWindow* aboutWindowWidget = nullptr;
QMenuBar* mainMenuBar = nullptr;
QMenu* variantMenu = nullptr;
QWidget* header = nullptr;
QToolButton* refreshIoInspectionButton = nullptr;
QWidget* ioContainerWidget = nullptr;
2021-05-30 16:53:24 +01:00
QLabel* ioUnavailableWidget = nullptr;
InsightTargetWidgets::TargetPackageWidget* targetPackageWidget = nullptr;
2021-04-04 21:04:12 +01:00
QWidget* footer = nullptr;
QLabel* targetStatusLabel = nullptr;
QLabel* programCounterValueLabel = nullptr;
2021-05-30 16:53:24 +01:00
std::map<QString, Targets::TargetVariant> supportedVariantsByName;
const Targets::TargetVariant* selectedVariant = nullptr;
2021-04-04 21:04:12 +01:00
bool uiDisabled = false;
bool isVariantSupported(const Targets::TargetVariant& variant);
2021-04-04 21:04:12 +01:00
void selectVariant(const Targets::TargetVariant* variant);
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
void toggleUi(bool disable);
void activate();
void deactivate();
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
public:
InsightWindow() = default;
2021-04-04 21:04:12 +01:00
2021-05-30 16:53:24 +01:00
void setEnvironmentConfig(const EnvironmentConfig& environmentConfig) {
this->environmentConfig = environmentConfig;
this->targetConfig = environmentConfig.targetConfig;
2021-04-04 21:04:12 +01:00
}
2021-05-30 16:53:24 +01:00
void setInsightConfig(const InsightConfig& insightConfig) {
this->insightConfig = insightConfig;
}
2021-04-04 21:04:12 +01:00
void init(
QApplication& application,
2021-05-30 16:53:24 +01:00
Targets::TargetDescriptor targetDescriptor
);
2021-04-04 21:04:12 +01:00
void show();
public slots:
2021-05-30 16:53:24 +01:00
void onTargetControllerSuspended();
void onTargetControllerResumed(const Bloom::Targets::TargetDescriptor& targetDescriptor);
2021-04-04 21:04:12 +01:00
void onTargetPinStatesUpdate(int variantId, Bloom::Targets::TargetPinStateMappingType pinStatesByNumber);
void onTargetStateUpdate(Targets::TargetState newState);
2021-04-04 21:04:12 +01:00
void onTargetProgramCounterUpdate(quint32 programCounter);
void onTargetIoPortsUpdate();
void close();
void openReportIssuesUrl();
void openGettingStartedUrl();
2021-04-04 21:04:12 +01:00
void openAboutWindow();
void togglePinIoState(InsightTargetWidgets::TargetPinWidget* pinWidget);
2021-04-04 21:04:12 +01:00
signals:
void refreshTargetPinStates(int variantId);
void setTargetPinState(
int variantId,
Bloom::Targets::TargetPinDescriptor pinDescriptor,
Bloom::Targets::TargetPinState pinState
);
};
}