140 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			140 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | /****************************************************************************
 | ||
|  | ** | ||
|  | ** 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:LGPL21$ | ||
|  | ** 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 or version 3 as published by the Free | ||
|  | ** Software Foundation and appearing in the file LICENSE.LGPLv21 and | ||
|  | ** LICENSE.LGPLv3 included in the packaging of this file. Please review the | ||
|  | ** following information to ensure the GNU Lesser General Public License | ||
|  | ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
 | ||
|  | ** 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. | ||
|  | ** | ||
|  | ** $QT_END_LICENSE$ | ||
|  | ** | ||
|  | ****************************************************************************/ | ||
|  | 
 | ||
|  | #include "mainwindow.h"
 | ||
|  | #include "ui_mainwindow.h"
 | ||
|  | #include "console.h"
 | ||
|  | #include "settingsdialog.h"
 | ||
|  | #include <QMessageBox>
 | ||
|  | 
 | ||
|  | 
 | ||
|  | //! [0]
 | ||
|  | MainWindow::MainWindow(QWidget *parent) : | ||
|  |     QMainWindow(parent), | ||
|  |     ui(new Ui::MainWindow) | ||
|  | { | ||
|  | //! [0]
 | ||
|  |     ui->setupUi(this); | ||
|  |     console = new Console; | ||
|  |     console->setEnabled(false); | ||
|  |     setCentralWidget(console); | ||
|  | //! [1]
 | ||
|  | //! [1]
 | ||
|  |     settings = new SettingsDialog; | ||
|  | 
 | ||
|  |     ui->actionConnect->setEnabled(true); | ||
|  |     ui->actionDisconnect->setEnabled(false); | ||
|  |     ui->actionQuit->setEnabled(true); | ||
|  |     ui->actionConfigure->setEnabled(true); | ||
|  | 
 | ||
|  |     initActionsConnections(); | ||
|  | 
 | ||
|  | ///! [2]
 | ||
|  |     connect(console, &Console::getData, this, &MainWindow::writeData); | ||
|  | //! [3]
 | ||
|  | } | ||
|  | //! [3]
 | ||
|  | 
 | ||
|  | MainWindow::~MainWindow() | ||
|  | { | ||
|  |     delete settings; | ||
|  |     delete ui; | ||
|  | } | ||
|  | 
 | ||
|  | //! [4]
 | ||
|  | void | ||
|  | MainWindow::startYAP (YAPEngine *&eng) | ||
|  | { | ||
|  |     SettingsDialog::Settings p = settings->settings(); | ||
|  |     eng = new YAPEngine(  ); | ||
|  |     //return eng != nullptr;
 | ||
|  | } | ||
|  | 
 | ||
|  | //! [4]
 | ||
|  | 
 | ||
|  | //! [5]
 | ||
|  | void MainWindow::stopYAP(YAPEngine *eng) | ||
|  |   { | ||
|  |    delete eng; | ||
|  |   } | ||
|  | //! [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 QString &data) | ||
|  | { | ||
|  |     //serial->write(data);
 | ||
|  | } | ||
|  | //! [6]
 | ||
|  | 
 | ||
|  | //! [7]
 | ||
|  | void MainWindow::readData() | ||
|  | { | ||
|  |     //QByteArray data = serial->readAll();
 | ||
|  |     //console->putData(data);
 | ||
|  | } | ||
|  | //! [7]
 | ||
|  | 
 | ||
|  | //! [8]
 | ||
|  | void MainWindow::handleError(YAPError error) | ||
|  | { | ||
|  |     if (error.get() == SYNTAX_ERROR) { | ||
|  |         QMessageBox::StandardButton reply; | ||
|  |           reply =   QMessageBox::question(this, tr("Syntax Error"),  "Quit?", | ||
|  |                               QMessageBox::Yes|QMessageBox::No); | ||
|  |         if (reply == QMessageBox::Yes) { | ||
|  |             stopYAP(eng); | ||
|  |           } | ||
|  |     } | ||
|  | } | ||
|  | //! [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())); | ||
|  | } |