Implement connecting to the device
This commit is contained in:
parent
69d6cf835b
commit
7c31bafa10
@ -1,6 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
#include <f1x/aasdk/TCP/ITCPEndpoint.hpp>
|
||||||
|
#include <f1x/aasdk/TCP/ITCPWrapper.hpp>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ConnectDialog;
|
class ConnectDialog;
|
||||||
@ -20,11 +22,22 @@ class ConnectDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ConnectDialog(QWidget *parent = nullptr);
|
explicit ConnectDialog(boost::asio::io_service& ioService, aasdk::tcp::ITCPWrapper& tcpWrapper, QWidget *parent = nullptr);
|
||||||
~ConnectDialog() override;
|
~ConnectDialog() override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void connectToDevice(const QString& ipAddress);
|
||||||
|
void connected(aasdk::tcp::ITCPEndpoint::SocketPointer socket);
|
||||||
|
void connectionFailed();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onConnectButtonClicked();
|
||||||
|
void onConnectionFailed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ConnectDialog *ui;
|
boost::asio::io_service& ioService_;
|
||||||
|
aasdk::tcp::ITCPWrapper& tcpWrapper_;
|
||||||
|
Ui::ConnectDialog *ui_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <QMessageBox>
|
||||||
#include <f1x/openauto/autoapp/UI/ConnectDialog.hpp>
|
#include <f1x/openauto/autoapp/UI/ConnectDialog.hpp>
|
||||||
#include "ui_connectdialog.h"
|
#include "ui_connectdialog.h"
|
||||||
|
|
||||||
@ -10,16 +11,47 @@ namespace autoapp
|
|||||||
namespace ui
|
namespace ui
|
||||||
{
|
{
|
||||||
|
|
||||||
ConnectDialog::ConnectDialog(QWidget *parent) :
|
ConnectDialog::ConnectDialog(boost::asio::io_service& ioService, aasdk::tcp::ITCPWrapper& tcpWrapper, QWidget *parent)
|
||||||
QDialog(parent),
|
: QDialog(parent)
|
||||||
ui(new Ui::ConnectDialog)
|
, ioService_(ioService)
|
||||||
|
, tcpWrapper_(tcpWrapper)
|
||||||
|
, ui_(new Ui::ConnectDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
qRegisterMetaType<aasdk::tcp::ITCPEndpoint::SocketPointer>("aasdk::tcp::ITCPEndpoint::SocketPointer");
|
||||||
|
|
||||||
|
ui_->setupUi(this);
|
||||||
|
connect(ui_->pushButtonCancel, &QPushButton::clicked, this, &ConnectDialog::close);
|
||||||
|
connect(ui_->pushButtonConnect, &QPushButton::clicked, this, &ConnectDialog::onConnectButtonClicked);
|
||||||
|
connect(this, &ConnectDialog::connectionFailed, this, &ConnectDialog::onConnectionFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConnectDialog::~ConnectDialog()
|
ConnectDialog::~ConnectDialog()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectDialog::onConnectButtonClicked()
|
||||||
|
{
|
||||||
|
const auto& ipAddress = ui_->lineEditIPAddress->text().toStdString();
|
||||||
|
auto socket = std::make_shared<boost::asio::ip::tcp::socket>(ioService_);
|
||||||
|
|
||||||
|
// !ec means no error
|
||||||
|
if(!tcpWrapper_.connect(*socket, ipAddress, 5277))
|
||||||
|
{
|
||||||
|
emit connected(socket);
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
emit connectionFailed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectDialog::onConnectionFailed()
|
||||||
|
{
|
||||||
|
QMessageBox errorMessage(QMessageBox::Critical, "Error", "Connection failed.", QMessageBox::Ok);
|
||||||
|
errorMessage.setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||||
|
errorMessage.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -90,8 +90,9 @@ int main(int argc, char* argv[])
|
|||||||
autoapp::ui::SettingsWindow settingsWindow(configuration);
|
autoapp::ui::SettingsWindow settingsWindow(configuration);
|
||||||
settingsWindow.setWindowFlags(Qt::WindowStaysOnTopHint);
|
settingsWindow.setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||||
|
|
||||||
autoapp::ui::ConnectDialog connectDialog;
|
aasdk::tcp::TCPWrapper tcpWrapper;
|
||||||
connectDialog.setWindowFlags(Qt::Window | Qt::WindowStaysOnTopHint);
|
autoapp::ui::ConnectDialog connectDialog(ioService, tcpWrapper);
|
||||||
|
connectDialog.setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||||
|
|
||||||
QObject::connect(&mainWindow, &autoapp::ui::MainWindow::exit, []() { std::exit(0); });
|
QObject::connect(&mainWindow, &autoapp::ui::MainWindow::exit, []() { std::exit(0); });
|
||||||
QObject::connect(&mainWindow, &autoapp::ui::MainWindow::openSettings, &settingsWindow, &autoapp::ui::SettingsWindow::showFullScreen);
|
QObject::connect(&mainWindow, &autoapp::ui::MainWindow::openSettings, &settingsWindow, &autoapp::ui::SettingsWindow::showFullScreen);
|
||||||
@ -105,7 +106,6 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
mainWindow.showFullScreen();
|
mainWindow.showFullScreen();
|
||||||
|
|
||||||
aasdk::tcp::TCPWrapper tcpWrapper;
|
|
||||||
aasdk::usb::USBWrapper usbWrapper(usbContext);
|
aasdk::usb::USBWrapper usbWrapper(usbContext);
|
||||||
aasdk::usb::AccessoryModeQueryFactory queryFactory(usbWrapper, ioService);
|
aasdk::usb::AccessoryModeQueryFactory queryFactory(usbWrapper, ioService);
|
||||||
aasdk::usb::AccessoryModeQueryChainFactory queryChainFactory(usbWrapper, ioService, queryFactory);
|
aasdk::usb::AccessoryModeQueryChainFactory queryChainFactory(usbWrapper, ioService, queryFactory);
|
||||||
@ -115,6 +115,11 @@ int main(int argc, char* argv[])
|
|||||||
auto usbHub(std::make_shared<aasdk::usb::USBHub>(usbWrapper, ioService, queryChainFactory));
|
auto usbHub(std::make_shared<aasdk::usb::USBHub>(usbWrapper, ioService, queryChainFactory));
|
||||||
auto connectedAccessoriesEnumerator(std::make_shared<aasdk::usb::ConnectedAccessoriesEnumerator>(usbWrapper, ioService, queryChainFactory));
|
auto connectedAccessoriesEnumerator(std::make_shared<aasdk::usb::ConnectedAccessoriesEnumerator>(usbWrapper, ioService, queryChainFactory));
|
||||||
auto app = std::make_shared<autoapp::App>(ioService, usbWrapper, tcpWrapper, androidAutoEntityFactory, std::move(usbHub), std::move(connectedAccessoriesEnumerator));
|
auto app = std::make_shared<autoapp::App>(ioService, usbWrapper, tcpWrapper, androidAutoEntityFactory, std::move(usbHub), std::move(connectedAccessoriesEnumerator));
|
||||||
|
|
||||||
|
QObject::connect(&connectDialog, &autoapp::ui::ConnectDialog::connected, [&app](auto socket) {
|
||||||
|
app->start(std::move(socket));
|
||||||
|
});
|
||||||
|
|
||||||
app->waitForUSBDevice();
|
app->waitForUSBDevice();
|
||||||
|
|
||||||
auto result = qApplication.exec();
|
auto result = qApplication.exec();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user