Changeset db91752 in terepaima for terepaima-0.4.16/sources/mainwindow.cpp
- Timestamp:
- Feb 20, 2018, 9:54:34 AM (6 years ago)
- Branches:
- stretch
- Children:
- 30f3152
- Parents:
- 5ce8751
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
terepaima-0.4.16/sources/mainwindow.cpp
r5de5cc7 rdb91752 54 54 #include <QUrlQuery> 55 55 #include <QJsonDocument> 56 #include <QHttpMultiPart> 57 #include <QHttpPart> 58 56 59 #include <QNetworkCookieJar> 57 60 … … 3865 3868 void MainWindow::on_verify_signature() { 3866 3869 3867 qDebug("Entro en callMurachi()");3868 callMurachi();3869 qDebug("Salio en callMurachi()");3870 //qDebug("Entro en callMurachi()"); 3871 //callMurachi(); 3872 //qDebug("Salio en callMurachi()"); 3870 3873 3871 3874 qDebug("Entro a on_verify_signature()"); … … 3978 3981 // QString version = executeRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/version","admin","admin"); 3979 3982 //QString fileid = "c73efabb-d771-4328-be4f-36b11c4add57"; 3980 QString fileid = "8dd41d79-c3c8-4490-944b-3a246422ab6c";3983 //QString fileid = "8dd41d79-c3c8-4490-944b-3a246422ab6c"; 3981 3984 QUrlQuery postData; 3982 3985 //postData.addQueryItem("fileId", fileid); … … 3994 3997 "\"contact\":\"582746574336\",\"signatureVisible\":\"true\"," 3995 3998 "\"signaturePage\":\"1\",\"xPos\":\"10\",\"yPos\":\"10\",\"lastSignature\":\"false\" }") 3996 .arg(file id).arg(certInHex);3999 .arg(fileId).arg(certInHex); 3997 4000 3998 4001 //postData.addQueryItem("", parameters); … … 4043 4046 4044 4047 4045 on_signature();4048 //on_signature(); 4046 4049 //QString verify = privateExecuteRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/aee1a794-5fc7-4008-ac6d-de2e79583074.pdf", 4047 4050 // "admin","admin",method="post",postData); … … 4052 4055 } 4053 4056 4057 void MainWindow::httpReadyRead() 4058 { 4059 // this slot gets called every time the QNetworkReply has new data. 4060 // We read all of its new data and write it into the file. 4061 // That way we use less RAM than when reading it at the finished() 4062 // signal of the QNetworkReply 4063 qDebug(" ** httpReadyRead() **"); 4064 4065 QFileInfo fileInfo(url.path()); 4066 QString fileName = fileInfo.fileName(); 4067 /* 4068 if (fileName.isEmpty()) 4069 fileName = "index.html"; 4070 */ 4071 /* if (QFile::exists(fileName)) { 4072 if (QMessageBox::question(this, tr("HTTP"), 4073 tr("There already exists a file called %1 in " 4074 "the current directory. Overwrite?").arg(fileName), 4075 QMessageBox::Yes|QMessageBox::No, QMessageBox::No) 4076 == QMessageBox::No) 4077 return; 4078 QFile::remove(fileName); 4079 } */ 4080 4081 4082 file = new QFile("/home/pbuitrago/prueba-PEDRO"); 4083 //qDebug("fileName: %s", qPrintable(fileName)); 4084 4085 if (!file->open(QIODevice::WriteOnly)) { 4086 QMessageBox::information(this, tr("HTTP"), 4087 tr("Unable to save the file %1: %2.") 4088 .arg(fileName).arg(file->errorString())); 4089 delete file; 4090 file = 0; 4091 } 4092 4093 if (file->open(QFile::Append)) 4094 file->write(response->readAll()); 4095 } 4096 4097 4098 4099 void MainWindow::downloadSignedFile() { 4100 4101 qDebug("** downloadSignedFile() **"); 4102 4103 url = "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/aee1a794-5fc7-4008-ac6d-de2e79583074.pdf"; 4104 QString empty = ""; 4105 executeRest(url.toString(), "admin", "admin", empty); 4106 4107 4108 4109 /* 4110 response = manager->get(QNetworkRequest(url)); 4111 4112 qDebug() << response->header(QNetworkRequest::ContentTypeHeader).toString(); 4113 qDebug() << response->header(QNetworkRequest::ContentDispositionHeader).toString(); 4114 qDebug() << response->header(QNetworkRequest::LastModifiedHeader).toDateTime().toString(); 4115 qDebug() << response->header(QNetworkRequest::ContentLengthHeader).toULongLong(); 4116 qDebug() << response->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); 4117 qDebug() << response->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(); 4118 4119 QFileInfo fileInfo(url.path()); 4120 qDebug("path: |%s|", qPrintable(url.path())); 4121 QString fileName = fileInfo.fileName(); 4122 qDebug("nameFile: |%s|", qPrintable(fileName)); 4123 4124 QFile *file = new QFile("/home/pbuitrago/Prueba-pedro"); 4125 //if(file->open(QFile::Append)) 4126 qDebug("Antes de abrirlo"); 4127 if(!file->open(QIODevice::WriteOnly | QIODevice::Text)) 4128 return; 4129 qDebug("Luego"); 4130 const QByteArray sdata = response->readAll(); 4131 file->write(sdata); 4132 qDebug()<< sdata; 4133 file->flush(); 4134 file->close(); 4135 //qDebug("No pudo abrir"); 4136 // { 4137 // if(response->readAll()=="true") 4138 // qDebug("Esta vacio. Hay problema"); 4139 // else qDebug("Esta bien"); 4140 // file->write(response->readAll()); 4141 // file->flush(); 4142 // file->close(); 4143 // } 4144 delete file; 4145 response->deleteLater(); 4146 // } 4147 // qDebug("************************************************************************************************"); 4148 // qDebug("url: |%s|", qPrintable(url)); 4149 // qDebug("url: |%s|", qPrintable(response->header(QNetworkRequest::ContentTypeHeader).toString())); 4150 // qDebug("url: |%s|", qPrintable(response->header(QNetworkRequest::ContentDispositionHeader).toString())); 4151 // qDebug("url: |%s|", qPrintable(response->header(QNetworkRequest::LastModifiedHeader).toDateTime().toString())); 4152 // qDebug("url: |%s|", qPrintable(response->header(QNetworkRequest::ContentLengthHeader).toULongLong())); 4153 // qDebug("url: |%s|", qPrintable(response->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt())); 4154 // qDebug("url: |%s|", qPrintable(response->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString())); 4155 // qDebug("************************************************************************************************"); 4156 4157 // //connect(response,SIGNAL(readyRead()),this, SLOT(httpReadyRead())); 4158 // //connect(response,SIGNAL(finished()),this, SLOT(httpDownloadFinished())); 4159 */ 4160 4161 } 4162 4163 4054 4164 void MainWindow::on_signature() { 4165 4055 4166 qDebug("** on_signature **"); 4056 4167 //agragar la función (código) de subir el archivo al servido 4168 on_uploadFile(); 4169 qDebug("antes de on_windowCertificate"); 4057 4170 on_windowCertificate(); 4058 4171 } 4059 4172 4173 void MainWindow::on_uploadFile() { 4174 qDebug("** on_uploadFile() **"); 4175 4176 4177 QUrlQuery postData; 4178 //postData.addQueryItem("fileId", fileid); 4179 //postData.addQueryItem("certificate", certInHex); 4180 //postData.addQueryItem("reason", "Certificado"); 4181 //postData.addQueryItem("location", "CENDITEL"); 4182 //postData.addQueryItem("contact", "582746574336"); 4183 //postData.addQueryItem("signatureVisible","true" ); 4184 //postData.addQueryItem("signaturePage","1" ); 4185 //postData.addQueryItem("xPos","10" ); 4186 //postData.addQueryItem("yPos","10" ); 4187 //postData.addQueryItem("lastSignature","false" ); 4188 4189 4190 //postData.addQueryItem("", parameters); 4191 4192 /* QByteArray postData; 4193 postData.append(QString("fileId=%1&").arg(fileid)); 4194 postData.append(QString("certificate=%1&").arg(certInHex)); 4195 postData.append(QString("reason=%1&").arg("Certificado")); 4196 postData.append(QString("location=%1&").arg("CENDITEL")); 4197 postData.append(QString("contact=%1&").arg("582746574336")); 4198 postData.append(QString("signatureVisible=%1&").arg("true")); 4199 postData.append(QString("signaturePage=%1&").arg("1")); 4200 postData.append(QString("xPos=%1&").arg("10")); 4201 postData.append(QString("yPos=%1&").arg("10")); 4202 postData.append(QString("lastSignature=%1").arg("false")); 4203 4204 */ 4205 //QUrlQuery postData1; 4206 QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); 4207 4208 QString preview_path = currentTab()->fileInfo().absoluteFilePath(); 4209 qDebug("***preview_path: |%s|",preview_path.toUtf8().data()); 4210 //QString preview_path = "/home/pbuitrago/tmp/prueba.pdf"; 4211 QHttpPart previewPathPart; 4212 previewPathPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload\"")); 4213 previewPathPart.setBody(preview_path.toLatin1()); 4214 4215 //QString preview_name = "prueba.pdf"; 4216 4217 QHttpPart previewFilePart; 4218 previewFilePart.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/pdf")); 4219 previewFilePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload\"; filename=\""+ preview_path + "\"")); 4220 QFile *file = new QFile(preview_path); 4221 4222 file->open(QIODevice::ReadOnly); 4223 previewFilePart.setBodyDevice(file); 4224 file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart 4225 4226 // multiPart->append(previewPathPart); 4227 multiPart->append(previewFilePart); 4228 4229 QString uploadfileid = executeRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos","admin","admin" 4230 ,multiPart); 4231 4232 qDebug(".....................*Verify: ID_FILE: %s", qPrintable(uploadfileid)); 4233 4234 4235 //fileId = uploadfileid; 4236 4237 4238 QJsonDocument d = QJsonDocument::fromJson(uploadfileid.toUtf8()); 4239 QJsonObject sett2 = d.object(); 4240 QJsonValue value = sett2.value(QString("fileId")); 4241 4242 fileId = value.toString(); 4243 qDebug(".....................****fileId: |%s|", qPrintable(fileId)); 4244 //on_windowCertificate(); 4245 4246 //on_signature(); 4247 //QString verify = privateExecuteRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/aee1a794-5fc7-4008-ac6d-de2e79583074.pdf", 4248 // "admin","admin",method="post",postData); 4249 4250 4251 // qDebug("Version: %s", qPrintable(version)); 4252 4253 qDebug("antes de salir"); 4254 //return fileId; 4255 4256 } 4257 4060 4258 4061 4259 void MainWindow::on_windowPIN(int x) { … … 4063 4261 qDebug("** on_windowPIN **"); 4064 4262 4065 qDebug("**CALLING TEST on_windowPIN **"); 4263 4066 4264 m_pin = new QDialog; 4067 4265 close_PIN = "falso"; … … 4111 4309 4112 4310 void MainWindow::on_managePIN() { 4113 qDebug(" on_gestionar_PIN");4311 qDebug("** on_gestionar_PIN ** "); 4114 4312 QString pin = m_campoContrasenia->text(); 4115 qDebug(" PIN: %s", qPrintable(pin));4313 qDebug(" **** PIN: %s", qPrintable(pin)); 4116 4314 m_pin->accept(); 4315 4316 qDebug("**CALLING TEST on_windowPIN **"); 4317 callMurachi(); 4117 4318 m_nct = new CryptoToken(); 4118 //QString hash("e4b820914010e65a578435fd6839f8dfe1037915d39130902970355a272ce3b3");4119 //currentHash = hash;4120 4319 4121 4320 try { … … 4150 4349 on_windowPIN(0); 4151 4350 } 4152 } 4153 4351 downloadSignedFile(); 4352 } 4353 4354 4355 void MainWindow::handleNetworkDataMP(QNetworkReply *networkReply) 4356 { 4357 qDebug("MainWindow::handleNetworkDataMP....*1"); 4358 4359 QUrl url = networkReply->url(); 4360 4361 qDebug("MainWindow::handleNetworkDataMP....*2"); 4362 4363 if (!networkReply->error()) { 4364 4365 QString response(networkReply->readAll()); 4366 qDebug("MainWindow::handleNetworkDataMP response: %s", qPrintable(response)); 4367 _currentrest = response; 4368 qDebug("MainWindow::handleNetworkDataMP _currentrest: %s", qPrintable(_currentrest)); 4369 int desde = response.lastIndexOf(":")+2; 4370 QString cad1 = response.remove(0,desde); 4371 int hasta = cad1.lastIndexOf("\""); 4372 QString cad2 = response.remove(hasta,2); 4373 signedfile = cad2; 4374 qDebug("MainWindow::handleNetworkDataMP Cadena %s", qPrintable(signedfile)); 4375 qDebug("MainWindow::handleNetworkDataMP CALLING_REST_SERVICE....response: |%s|",qPrintable(response)); 4376 4377 4378 } else { 4379 qDebug("handleNetworkDataMP OCURRED ERROR network error: |%s|",qPrintable(networkReply->errorString())); 4380 } 4381 4382 4383 networkReply->deleteLater(); 4384 } 4154 4385 4155 4386 … … 4165 4396 4166 4397 QString response(networkReply->readAll()); 4167 _currentrest = response; 4168 qDebug("CALLING_REST_SERVICE....response: |%s|",qPrintable(response)); 4169 4398 qDebug("****> response: %s", qPrintable(response)); 4399 if (!response.isEmpty()){ 4400 _currentrest = response; 4401 qDebug("****> _currentrest: %s", qPrintable(_currentrest)); 4402 int desde = response.lastIndexOf(":")+2; 4403 QString cad1 = response.remove(0,desde); 4404 int hasta = cad1.lastIndexOf("\""); 4405 QString cad2 = response.remove(hasta,2); 4406 signedfile = cad2; 4407 qDebug("Cadena %s", qPrintable(signedfile)); 4408 qDebug("CALLING_REST_SERVICE....response: |%s|",qPrintable(response)); 4409 } 4410 // depurar por que ocurre dos veces 4170 4411 4171 4412 } else { … … 4177 4418 } 4178 4419 4420 void MainWindow::httpDownloadFinished() { 4421 qDebug("MainWindow::httpDownloadFinished....*1"); 4422 localFile.flush(); 4423 localFile.close(); 4424 reply->deleteLater(); 4425 4426 } 4427 4428 void MainWindow::handleDownloadFile() 4429 { 4430 qDebug("MainWindow::handleDownloadFile....*1"); 4431 4432 if (reply == NULL) { 4433 qDebug("MainWindow::handleDownloadFile reply is NULL"); 4434 return; 4435 } 4436 4437 qDebug("MainWindow::handleDownloadFile....*2"); 4438 4439 if (!reply->error()) { 4440 4441 localFile.setFileName("download.pdf"); 4442 4443 4444 if (!localFile.open(QIODevice::WriteOnly )) 4445 return; 4446 ; 4447 localFile.write(reply->readAll()); 4448 4449 4450 } else { 4451 qDebug("handleNetworkData OCURRED ERROR network error: |%s|",qPrintable(reply->errorString())); 4452 } 4453 4454 4455 } 4179 4456 4180 4457 void MainWindow::slotError(QNetworkReply::NetworkError e) { … … 4275 4552 4276 4553 4277 QString MainWindow::executeRest(const QString &url, const QString &name, const QString &pass, const QString&postData) {4554 QString MainWindow::executeRest(const QString &url, const QString &name, const QString &pass, QHttpMultiPart* postData) { 4278 4555 _currentrest = ""; 4279 4556 4280 qDebug("Executing Executing... Rest...1");4557 qDebug("Executing Executing...QHttpMultiPart...Multipart Rest...1"); 4281 4558 4282 4559 if (manager == NULL) { … … 4287 4564 } 4288 4565 4289 4290 4291 4292 4566 qDebug("Executing Executing...Rest...2"); 4567 qDebug("Executing Executing...QHttpMultiPart...Multipart Rest...2"); 4293 4568 4294 4569 //int nargs; … … 4298 4573 qDebug("Executing Rest...3"); 4299 4574 4300 QNetworkRequest request; 4575 QNetworkRequest request; 4576 QSslConfiguration conf = request.sslConfiguration(); 4577 conf.setPeerVerifyMode(QSslSocket::VerifyNone); 4578 //conf.setPeerVerifyMode(QSslSocket::AutoVerifyPeer); 4579 //conf.setProtocol(QSsl::AnyProtocol); 4580 request.setSslConfiguration(conf); 4581 4582 qDebug("Executing Rest...4"); 4583 4584 QUrl myurl(url); 4585 4586 //myurl.setUserName(name); 4587 //myurl.setPassword(pass); 4588 request.setUrl(myurl); 4589 4590 qDebug("Executing Rest...5"); 4591 4592 connect(manager, SIGNAL(finished(QNetworkReply*)), 4593 this, SLOT(handleNetworkDataMP(QNetworkReply*))); 4594 4595 4596 qDebug("Executing Executing...QHttpMultiPart...Multipart Rest...3"); 4597 qDebug("Executing Rest...6"); 4598 4599 request.setRawHeader("User-Agent", "MyOwnBrowser 1.0"); 4600 //QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://127.0.0.1:8000"))); 4601 //request.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data"); 4602 4603 //request.setAttribute(QNetworkRequest::ConnectionEncryptedAttribute,QVariant(true)); 4604 4605 QString headerData = QString("Basic YWRtaW46YWRtaW4="); 4606 request.setRawHeader("Authorization", headerData.toUtf8()); 4607 4608 request.setRawHeader("xhrFields", "{ withCredentials:true }"); 4609 4610 //QNetworkReply *reply = manager->post(request, postData.encodedQuery()); 4611 //QNetworkReply *reply = manager->get(request); 4612 4613 QNetworkReply *reply = manager->post(request, postData); 4614 //QNetworkReply *reply = manager->post(request,postData.toString(QUrl::FullyEncoded).toUtf8()); 4615 qDebug("Executing Rest..............*7"); 4616 4617 connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), 4618 this, SLOT(slotError(QNetworkReply::NetworkError))); 4619 4620 QEventLoop loop; 4621 connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); 4622 loop.exec(); 4623 4624 connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), 4625 this, SLOT(slotError(QNetworkReply::NetworkError))); 4626 4627 qDebug("Executing Rest...8"); 4628 4629 QString result = _currentrest; 4630 //QString result = "....test1"; 4631 qDebug("Executing Executing...QHttpMultiPart...Multipart Rest...4 result:%s", qPrintable(result)); 4632 return result; 4633 4634 } 4635 4636 4637 4638 QString MainWindow::executeRest(const QString &url, const QString &name, const QString &pass, const QString& postData) { 4639 _currentrest = ""; 4640 4641 qDebug("Executing Executing...Rest...1"); 4642 4643 if (manager == NULL) { 4644 qDebug("Executing Executing..MANAGER new"); 4645 manager = new QNetworkAccessManager(this); 4646 cookiesJar = new QNetworkCookieJar(this); 4647 manager->setCookieJar(cookiesJar); 4648 } 4649 4650 qDebug("Executing Executing...Rest...2"); 4651 4652 //int nargs; 4653 //char** argv =NULL; 4654 //QCoreApplication myapp(nargs,argv); 4655 4656 qDebug("Executing Rest...3"); 4657 4658 QNetworkRequest request; 4301 4659 QSslConfiguration conf = request.sslConfiguration(); 4302 4660 conf.setPeerVerifyMode(QSslSocket::VerifyNone); … … 4320 4678 4321 4679 qDebug("Executing Rest...5"); 4322 4323 connect(manager, SIGNAL(finished(QNetworkReply*)), 4324 this, SLOT(handleNetworkData(QNetworkReply*))); 4680 if (url.indexOf("/descargas") > 0){ 4681 // connect(manager, SIGNAL(readyRead()), 4682 // this, SLOT(handleDownloadFile())); 4683 }else { 4684 connect(manager, SIGNAL(finished(QNetworkReply*)), 4685 this, SLOT(handleNetworkData(QNetworkReply*))); 4686 } 4325 4687 4326 4688 … … 4342 4704 //QNetworkReply *reply = manager->get(request); 4343 4705 4344 QNetworkReply *reply = manager->post(request, postData.toUtf8()); 4706 if (url.indexOf("/descargas") > 0){ 4707 reply = manager->get(request); 4708 connect(reply, SIGNAL(readyRead()), 4709 this, SLOT(handleDownloadFile())); 4710 connect(reply, SIGNAL(finished()), 4711 this, SLOT(httpDownloadFinished())); 4712 4713 }else{ 4714 reply = manager->post(request, postData.toUtf8()); 4715 } 4345 4716 //QNetworkReply *reply = manager->post(request,postData.toString(QUrl::FullyEncoded).toUtf8()); 4346 4717 qDebug("Executing Rest..............*7"); 4347 4718 4348 connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),4349 this, SLOT(slotError(QNetworkReply::NetworkError)));4719 //connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), 4720 // this, SLOT(slotError(QNetworkReply::NetworkError))); 4350 4721 4351 4722 QEventLoop loop; … … 4360 4731 QString result = _currentrest; 4361 4732 //QString result = "....test1"; 4733 qDebug("%s", qPrintable(result)); 4362 4734 return result; 4363 4735 … … 4383 4755 m_nct = new CryptoToken(); 4384 4756 4385 4386 4387 4388 4757 //Sección para verificar si hay dispositivo cryptografico conectado 4389 4758 try { 4390 4759 certificateInformationListN = m_nct->getDeviceCertificates(); //obtener los certificados disponible en el dispositivo 4391 4760 4392 qDebug("******************* Certification Info **********************");4393 for(int i= 0; i < certificateInformationListN.size(); i++) {4394 for(int j= 0; j < certificateInformationListN[i].size(); j++) {4395 QString data = certificateInformationListN[i].at(j);4396 if (j == 3) {4397 certInHex = data;4398 }4399 qDebug(",,,,addngCERTIFICATION INFO %d %d: |%s|",i,j, qPrintable(data));4400 4401 }4402 qDebug(".................");4403 }4761 // qDebug("******************* Certification Info **********************"); 4762 // for(int i= 0; i < certificateInformationListN.size(); i++) { 4763 // for(int j= 0; j < certificateInformationListN[i].size(); j++) { 4764 // QString data = certificateInformationListN[i].at(j); 4765 // if (j == 3) { 4766 // certInHex = data; 4767 // } 4768 // qDebug(",,,,addngCERTIFICATION INFO %d %d: |%s|",i,j, qPrintable(data)); 4769 4770 // } 4771 // qDebug("................."); 4772 // } 4404 4773 }catch(std::runtime_error e){ 4405 4774 ok = "falso"; … … 4505 4874 qDebug("columna: %s", qPrintable(selectText)); 4506 4875 m_certificate->accept(); 4876 //Agregando nuevo codigo 4877 qDebug("******************* Certification Info **********************"); 4878 for(int i= 0; i < certificateInformationListN.size(); i++) { 4879 for(int j= 0; j < certificateInformationListN[i].size(); j++) { 4880 QString data = certificateInformationListN[i].at(j); 4881 if (j == 3) { 4882 certInHex = data; 4883 } 4884 qDebug(",,,,addngCERTIFICATION INFO %d %d: |%s|",i,j, qPrintable(data)); 4885 4886 } 4887 qDebug("................."); 4888 } 4507 4889 on_windowPIN(1); 4508 4890
Note: See TracChangeset
for help on using the changeset viewer.