/**************************************************************************** ** qcrono - un reloj digital y cronómetro **--------------------------------------------------------------------------- ** qcrono - main.cpp, qcrono.cpp, qcrono.h, qcrono.qrc, qcrono.ui **=========================================================================== ** FJA - fja@neocipres.com Abril de 2018 (9/05/2018) **=========================================================================== ** 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 GNU ** General Public Licensing requirements will be met: ** ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ****************************************************************************/ #include "qcrono.h" #include "ui_qcrono.h" #include <QMessageBox> #include <QFile> qcrono::qcrono(QWidget *parent) : QMainWindow(parent), ui(new Ui::qcrono) { ui->setupUi(this); setWindowFlags(Qt::Window | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); tiempo = new QTimer(this); connect(tiempo, SIGNAL(timeout()), this, SLOT(muestraHora())); connect(tiempo, SIGNAL(timeout()), this, SLOT(muestraContador())); tiempo->start(1000); ui->lcdNHora->setStyleSheet("background-color:rgb(224, 196, 177)"); ui->lcdNCrono->setStyleSheet("background-color:rgb(181, 181, 220)"); ui->lcdNCuenta->setStyleSheet("background-color:rgb(185, 185, 185)"); hh = 0; mm = 0; incmm0 = 0; iniciar = false; ui->lcdNCrono->display(" "); ui->lcdNCuenta->display("0"); connect(ui->pBQt, SIGNAL(clicked()), qApp, SLOT(aboutQt())); muestraHora(); } qcrono::~qcrono() { delete ui; } void qcrono::on_pBAyuda_clicked() { QString separador = QString::null; separador.fill( '-', 78 ); separador = "<p><b>"+separador+"</b></p>"; QString nomAp = "<p><b><BIG><BIG>qcrono</BIG></BIG></b></p><br>"; QString desAp1 = "<p><b>Una forma de ser conscientes de como pasa</b></p>"; QString desAp2 = "<p><b>el tiempo</b></p>"; QString autor = "<p><b>FJA</b> - fja@neocipres.com </p>"; QString web = QString::fromUtf8("<p><a href= http://prg.neocipres.com>El Ciprés S.L. --> 0</a></p>"); QString version = QString::fromUtf8("<p>Versión: 0.9.1</p>"); QString modificado = "<p>Abril de 2018 - Modificado el 9 de May/2018</p>"; QString licencia = QString::fromUtf8("<p>Distribuido de acuerdo a los términos de la <a href= https://www.gnu.org/licenses/licenses.es.html>licencia GNU/GPL</a></p>"); QString gnu = "<p><a href= http://www.gnu.org/home.es.html>Proyecto GNU</a></p>"; //QString otro = QString::QString(self.tr("<p><em> </em> </p>")) QMessageBox::about(ui->centralWidget, " Acerca de ...", nomAp + desAp1 + desAp2 + separador + autor + web + modificado + separador + version + licencia + gnu); } void qcrono::muestraHora() { QTime hora = QTime::currentTime(); QString text = hora.toString("hh:mm"); if ((hora.second() % 2) == 0) text[2] = ' '; ui->lcdNHora->display(text); } void qcrono::muestraContador() { if (iniciar){ QTime hora = QTime::currentTime(); mm1 = QTime(0, 0, 0).secsTo(hora) / 60; incmm1 = mm1 - mm0; if (incmm1 != incmm0) { ui->lcdNCuenta->display(QString::number(incmm1)); incmm0 = incmm1; // Cuenta atrás .... if (mm != 0){ mm--; QString texto = QString::number(hh) + ":" + QString::number(mm); ui->lcdNCrono->display(texto); } if (mm == 0 && hh != 0){ mm = 59; hh--; QString texto = QString::number(hh) + ":" + QString::number(mm); ui->lcdNCrono->display(texto); } if (mm == 0 && hh == 0){ activarAlarma(); activarBotones(); ui->statusBar->showMessage(QString::fromUtf8("> Cuenta atrás finalizada "), 5000); } } } } void qcrono::on_dialHora_valueChanged(int value) { hh = value; QString texto = QString::number(hh) + ":" + QString::number(mm); ui->lcdNCrono->display(texto); } void qcrono::on_dialMinuto_valueChanged(int value) { mm = value; QString texto = QString::number(hh) + ":" + QString::number(mm); ui->lcdNCrono->display(texto); } void qcrono::on_pBIniciar_clicked() { iniciar = true; QTime hora = QTime::currentTime(); mm0 = QTime(0, 0, 0).secsTo(hora) / 60; ui->dialHora->setEnabled(false); ui->dialMinuto->setEnabled(false); ui->pBIniciar->setEnabled(false); ui->statusBar->showMessage("> Contador en marcha ...", 5000); } void qcrono::on_pBParar_clicked() { activarBotones(); ui->statusBar->showMessage("> Contador detenido ...", 5000); } void qcrono::activarBotones() { iniciar = false; incmm0 = 0; ui->lcdNCuenta->display("0"); ui->dialHora->setEnabled(true); ui->dialMinuto->setEnabled(true); ui->pBIniciar->setEnabled(true); } void qcrono::activarAlarma() { QString nomF; nomF = "rec/alarma.wav"; QFile fichero(nomF); if (!fichero.exists()){ QString aviso = tr("No existe el archivo:\n\n %1\n\n%2").arg(nomF).arg(fichero.errorString()); QMessageBox::critical(ui->centralWidget, "Error al abrir", aviso); } else { sonido = new QSound(nomF); sonido->setLoops(3); // ??? sonido->play(nomF); } }