diff options
author | Kai Koehne <kai.koehne@digia.com> | 2013-04-30 14:46:08 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-03 17:01:47 +0200 |
commit | 494c616951d41f2f394a7157f8970e14096f41b4 (patch) | |
tree | 9e42e9970b4b28809d97c0de94acc9fa7a81c54e /examples/serialport/terminal/mainwindow.cpp | |
parent | bcdeb589dd9d3b0ff7270d380d043b1882eefdc0 (diff) |
Fix examples directory layout
Move examples into a dedicated 'serialport' directory. This is
in line with what the other modules do, and makes sure that
the examples show up in a sensible place even for the 'combined'
source packages.
Task-number: QTBUG-30912
Change-Id: Iefa2b634df3d2eb34f655b34f6fb24a224b78869
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Diffstat (limited to 'examples/serialport/terminal/mainwindow.cpp')
-rw-r--r-- | examples/serialport/terminal/mainwindow.cpp | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/examples/serialport/terminal/mainwindow.cpp b/examples/serialport/terminal/mainwindow.cpp new file mode 100644 index 00000000..47864a25 --- /dev/null +++ b/examples/serialport/terminal/mainwindow.cpp @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com> +** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org> +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSerialPort module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "console.h" +#include "settingsdialog.h" + +#include <QMessageBox> +#include <QtSerialPort/QSerialPort> + +//! [0] +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ +//! [0] + ui->setupUi(this); + console = new Console; + console->setEnabled(false); + setCentralWidget(console); +//! [1] + serial = new QSerialPort(this); +//! [1] + settings = new SettingsDialog; + + ui->actionConnect->setEnabled(true); + ui->actionDisconnect->setEnabled(false); + ui->actionQuit->setEnabled(true); + ui->actionConfigure->setEnabled(true); + + initActionsConnections(); + + connect(serial, SIGNAL(error(QSerialPort::SerialPortError)), this, + SLOT(handleError(QSerialPort::SerialPortError))); + +//! [2] + connect(serial, SIGNAL(readyRead()), this, SLOT(readData())); +//! [2] + connect(console, SIGNAL(getData(QByteArray)), this, SLOT(writeData(QByteArray))); +//! [3] +} +//! [3] + +MainWindow::~MainWindow() +{ + delete settings; + delete ui; +} + +//! [4] +void MainWindow::openSerialPort() +{ + SettingsDialog::Settings p = settings->settings(); + serial->setPortName(p.name); + if (serial->open(QIODevice::ReadWrite)) { + if (serial->setBaudRate(p.baudRate) + && serial->setDataBits(p.dataBits) + && serial->setParity(p.parity) + && serial->setStopBits(p.stopBits) + && serial->setFlowControl(p.flowControl)) { + + console->setEnabled(true); + console->setLocalEchoEnabled(p.localEchoEnabled); + ui->actionConnect->setEnabled(false); + ui->actionDisconnect->setEnabled(true); + ui->actionConfigure->setEnabled(false); + ui->statusBar->showMessage(tr("Connected to %1 : %2, %3, %4, %5, %6") + .arg(p.name).arg(p.stringBaudRate).arg(p.stringDataBits) + .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl)); + + } else { + serial->close(); + QMessageBox::critical(this, tr("Error"), serial->errorString()); + + ui->statusBar->showMessage(tr("Open error")); + } + } else { + QMessageBox::critical(this, tr("Error"), serial->errorString()); + + ui->statusBar->showMessage(tr("Configure error")); + } +} +//! [4] + +//! [5] +void MainWindow::closeSerialPort() +{ + serial->close(); + console->setEnabled(false); + ui->actionConnect->setEnabled(true); + ui->actionDisconnect->setEnabled(false); + ui->actionConfigure->setEnabled(true); + ui->statusBar->showMessage(tr("Disconnected")); +} +//! [5] + +void MainWindow::about() +{ + QMessageBox::about(this, tr("About Simple Terminal"), + tr("The <b>Simple Terminal</b> example demonstrates how to " + "use the Qt Serial Port module in modern GUI applications " + "using Qt, with a menu bar, toolbars, and a status bar.")); +} + +//! [6] +void MainWindow::writeData(const QByteArray &data) +{ + serial->write(data); +} +//! [6] + +//! [7] +void MainWindow::readData() +{ + QByteArray data = serial->readAll(); + console->putData(data); +} +//! [7] + +//! [8] +void MainWindow::handleError(QSerialPort::SerialPortError error) +{ + if (error == QSerialPort::ResourceError) { + QMessageBox::critical(this, tr("Critical Error"), serial->errorString()); + closeSerialPort(); + } +} +//! [8] + +void MainWindow::initActionsConnections() +{ + connect(ui->actionConnect, SIGNAL(triggered()), this, SLOT(openSerialPort())); + connect(ui->actionDisconnect, SIGNAL(triggered()), this, SLOT(closeSerialPort())); + connect(ui->actionQuit, SIGNAL(triggered()), this, SLOT(close())); + connect(ui->actionConfigure, SIGNAL(triggered()), settings, SLOT(show())); + connect(ui->actionClear, SIGNAL(triggered()), console, SLOT(clear())); + connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about())); + connect(ui->actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); +} |