mirror of https://github.com/f1xpl/openauto.git
Implement connecting to the device
parent
69d6cf835b
commit
7c31bafa10
|
@ -1,6 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <QDialog>
|
||||
#include <f1x/aasdk/TCP/ITCPEndpoint.hpp>
|
||||
#include <f1x/aasdk/TCP/ITCPWrapper.hpp>
|
||||
|
||||
namespace Ui {
|
||||
class ConnectDialog;
|
||||
|
@ -20,11 +22,22 @@ class ConnectDialog : public QDialog
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ConnectDialog(QWidget *parent = nullptr);
|
||||
explicit ConnectDialog(boost::asio::io_service& ioService, aasdk::tcp::ITCPWrapper& tcpWrapper, QWidget *parent = nullptr);
|
||||
~ConnectDialog() override;
|
||||
|
||||
signals:
|
||||
void connectToDevice(const QString& ipAddress);
|
||||
void connected(aasdk::tcp::ITCPEndpoint::SocketPointer socket);
|
||||
void connectionFailed();
|
||||
|
||||
private slots:
|
||||
void onConnectButtonClicked();
|
||||
void onConnectionFailed();
|
||||
|
||||
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 "ui_connectdialog.h"
|
||||
|
||||
|
@ -10,16 +11,47 @@ namespace autoapp
|
|||
namespace ui
|
||||
{
|
||||
|
||||
ConnectDialog::ConnectDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ConnectDialog)
|
||||
ConnectDialog::ConnectDialog(boost::asio::io_service& ioService, aasdk::tcp::ITCPWrapper& tcpWrapper, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, 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()
|
||||
{
|
||||
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);
|
||||
settingsWindow.setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||
|
||||
autoapp::ui::ConnectDialog connectDialog;
|
||||
connectDialog.setWindowFlags(Qt::Window | Qt::WindowStaysOnTopHint);
|
||||
aasdk::tcp::TCPWrapper tcpWrapper;
|
||||
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::openSettings, &settingsWindow, &autoapp::ui::SettingsWindow::showFullScreen);
|
||||
|
@ -105,7 +106,6 @@ int main(int argc, char* argv[])
|
|||
|
||||
mainWindow.showFullScreen();
|
||||
|
||||
aasdk::tcp::TCPWrapper tcpWrapper;
|
||||
aasdk::usb::USBWrapper usbWrapper(usbContext);
|
||||
aasdk::usb::AccessoryModeQueryFactory queryFactory(usbWrapper, ioService);
|
||||
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 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));
|
||||
|
||||
QObject::connect(&connectDialog, &autoapp::ui::ConnectDialog::connected, [&app](auto socket) {
|
||||
app->start(std::move(socket));
|
||||
});
|
||||
|
||||
app->waitForUSBDevice();
|
||||
|
||||
auto result = qApplication.exec();
|
||||
|
|
Loading…
Reference in New Issue