Qt OPC UA Viewer
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QOpcUaClient>
#include <QOpcUaHistoryData>
#include <QMainWindow>
class OpcUaModel;
namespace Ui {
class MainWindow;
}
class QOpcUaGenericStructHandler;
class QOpcUaProvider;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(const QString &initialUrl, QWidget *parent = nullptr);
~MainWindow();
Q_INVOKABLE void log(const QString &text, const QString &context, const QColor &color);
void log(const QString &text, const QColor &color = Qt::black);
private slots:
void connectToServer();
void findServers();
void findServersComplete(const QList<QOpcUaApplicationDescription> &servers, QOpcUa::UaStatusCode statusCode);
void getEndpoints();
void getEndpointsComplete(const QList<QOpcUaEndpointDescription> &endpoints, QOpcUa::UaStatusCode statusCode);
void clientConnected();
void clientDisconnected();
void namespacesArrayUpdated(const QStringList &namespaceArray);
void handleGenericStructHandlerInitFinished(bool success);
void clientError(QOpcUaClient::ClientError);
void clientState(QOpcUaClient::ClientState);
void showErrorDialog(QOpcUaErrorState *errorState);
void openCustomContextMenu(const QPoint &point);
void toggleMonitoring();
void showHistorizing();
void handleReadHistoryDataFinished(QList<QOpcUaHistoryData> results, QOpcUa::UaStatusCode serviceResult);
private:
void createClient();
void updateUiState();
void setupPkiConfiguration();
private:
Ui::MainWindow *ui;
OpcUaModel *mOpcUaModel;
QOpcUaProvider *mOpcUaProvider;
QOpcUaClient *mOpcUaClient = nullptr;
QScopedPointer<QOpcUaGenericStructHandler> mGenericStructHandler;
QList<QOpcUaEndpointDescription> mEndpointList;
bool mClientConnected = false;
QOpcUaApplicationIdentity m_identity;
QOpcUaPkiConfiguration m_pkiConfig;
QOpcUaEndpointDescription m_endpoint; // current endpoint used to connect
QMenu *mContextMenu;
QAction *mContextMenuMonitoringAction;
QAction *mContextMenuHistorizingAction;
QScopedPointer<QOpcUaHistoryReadResponse> mHistoryReadResponse;
};
#endif // MAINWINDOW_H