![]() |
OpenAlbum 1.0.b
|
00001 #include <string> 00002 #include "string.h" 00003 #include <iostream> 00004 #include "formprincipal.h" 00005 #include "ui_formprincipal.h" 00006 #include "eleccionorden.h" 00007 #include "ui_eleccionorden.h" 00008 #include <QString> 00009 #include <QList> 00010 #include <QFileDialog> 00011 #include <QTreeWidget> 00012 #include <QGraphicsView> 00013 #include <QGraphicsScene> 00014 #include <QImage> 00015 #include <QGraphicsPixmapItem> 00016 #include <QPixmap> 00017 #include "parser.h" 00018 #include "Portada.h" 00019 #include "formtextoclass.h" 00020 #include "ui_formtextoclass.h" 00021 #include "fondodialog.h" 00022 #include "ui_fondodialog.h" 00023 #include "dialogtamanno.h" 00024 #include "ui_dialogtamanno.h" 00025 #include <QProgressDialog> 00026 #include <QDateTime> 00027 #include "album.h" 00028 #include <algorithm> 00029 #include "dialogordenpersonalizado.h" 00030 #include "ui_dialogordenpersonalizado.h" 00031 #include "dialogcreacionpaginaspersonalizadas.h" 00032 #include "ui_dialogcreacionpaginaspersonalizadas.h" 00033 #include "dialogcreacionpaginas.h" 00034 #include "ui_dialogcreacionpaginas.h" 00035 #include "Pagina.h" 00036 #include "error.h" 00037 #include <QWizardPage> 00038 #include "introduccionwizard.h" 00039 #include "ui_introduccionwizard.h" 00040 #include "ui_portadawizard.h" 00041 #include "portadawizard.h" 00042 #include "ui_fotoswizard.h" 00043 #include "fotoswizard.h" 00044 #include "finwizard.h" 00045 #include "dialogpropiedades.h" 00046 #include "creditos.h" 00047 #include "introapp.h" 00048 #include "ui_fondoportadawizard.h" 00049 00050 FormPrincipal::FormPrincipal(QWidget *parent, controladorResolucion *controlador_, QDir directorioDeTrabajo) : 00051 QMainWindow(parent), 00052 ui(new Ui::FormPrincipal) 00053 { 00054 00055 ui->setupUi(this); 00056 introApp *intro=new introApp(this, directorioDeTrabajo); 00057 intro->setAttribute(Qt::WA_DeleteOnClose); 00058 intro->raise(); 00059 00060 00061 QDir *dirAux; 00062 QStringList *list; 00063 try{ 00064 00065 QString pathAux=directorioDeTrabajo.absolutePath() + "/textures/"; 00066 dirAux=new QDir(pathAux); 00067 list=new QStringList("*.jpg"); 00068 }catch(std::exception& e){ 00069 Error *err=new Error(2, e.what(), this); 00070 err->LanzarDialogo(); 00071 delete err; 00072 exit(1); 00073 } 00074 QStringList fileNamesAux = dirAux->entryList(*list); 00075 intro->setAttribute(Qt::WA_DeleteOnClose ); 00076 intro->setMaximoBarra(fileNamesAux.size()+6); 00077 intro->show(); 00078 intro->setValorBarra(0); 00079 delete dirAux; 00080 delete list; 00081 QDir oculto; 00082 intro->setValorBarra(1); 00083 intro->setValorLabel(tr("Inicializando app..."), 1); 00084 00085 00086 00087 00088 try{ 00089 if(!oculto.exists(directorioDeTrabajo.absolutePath()+"/templates")){ 00090 throw std::ios_base::failure(tr("No se encuentra el directorio /templates con las plantillas").toStdString()); 00091 } 00092 if(!oculto.exists(directorioDeTrabajo.absolutePath()+"/templates/pages")){ 00093 throw std::ios_base::failure(tr("No se encuentra el directorio /templates/pages con las plantillas de página").toStdString()); 00094 } 00095 if(!oculto.exists(directorioDeTrabajo.absolutePath()+"/frames")){ 00096 throw std::ios_base::failure(tr("No se encuentra el directorio /frames con los marcos de página").toStdString()); 00097 } 00098 if(!oculto.exists(directorioDeTrabajo.absolutePath()+"/textures")){ 00099 throw std::ios_base::failure(tr("No se encuentra el directorio /textures con las texturas").toStdString()); 00100 } 00101 00102 00103 }catch(std::exception& e){ 00104 Error *err=new Error(6, e.what(), this); 00105 err->LanzarDialogo(); 00106 delete err; 00107 exit(1); 00108 } 00109 00110 this->paginasPersonalizadas=false; 00111 this->paginasAleatorias=false; 00112 this->paginasFijas=false; 00113 ordenAlfabetico=false; 00114 this->inicializarDespl=true; 00115 ordenFechaCreciente=false; 00116 ordenFechaDecreciente=false; 00117 ordenPersonalizado=false; 00118 this->mostrandosePaginaActualmente=false; 00119 this->creadoConAsistente=false; 00120 this->seleccionadaTextura=false; 00121 this->insertadoActionSalir=false; 00122 //Establecemos el ancho de cada columna del treeWidget, que servirá para seleccionar las imágenes que contendrá el álbum 00123 this->ejecutadoWizard=false; 00124 ui->treeWidget->setHeaderLabel(" "); 00125 ui->treeWidget->setStyle(new QWindowsStyle); 00126 this->controlador=controlador_; 00127 this->aplicarDimensiones(); 00128 00129 00130 QString path2=directorioDeTrabajo.absolutePath() + "/data/templatePredef.png"; 00131 QPixmap *pix=new QPixmap(path2); 00132 QGraphicsScene *scena=new QGraphicsScene(); 00133 00134 ui->plantillaPreview->setScene(scena); 00135 scena->addPixmap(pix->scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 00136 delete pix; 00137 this->ui->toolBar->setIconSize(QSize(18, 18)); 00138 this->ui->toolBar->setStyle(new QWindowsStyle); 00139 this->ui->menuBar->setStyle(new QWindowsStyle); 00140 this->ui->action_Propiedades->setDisabled(true); 00141 this->ui->actionPropiedadesBoton->setDisabled(true); 00142 this->ui->selectorPlantilla->setStyle(new QWindowsStyle); 00143 this->ui->groupBox->setStyle(new QWindowsStyle); 00144 this->ui->groupBox_4->setStyle(new QWindowsStyle); 00145 this->ui->groupBox_5->setStyle(new QWindowsStyle); 00146 this->ui->plantillaPreview->setStyle(new QWindowsStyle); 00147 this->ui->imagePreview->setStyle(new QWindowsStyle); 00148 this->ui->visorAlbum->setStyle(new QWindowsStyle); 00149 this->semillaInicializada=false; 00150 this->elegidaFrontalPortada=false; 00151 this->elegidoTexto=false; 00152 this->ui->selectFoto1->setDisabled(true); 00153 this->ui->selectFoto2->setDisabled(true); 00154 this->ui->botonPrueba->setDisabled(true); 00155 this->elegidaTraseraPortada=false; 00156 this->elegidoFondoPortada=false; 00157 this->elegidaPlantilla=false; 00158 this->activadoVisualizadorPrincipal=false; 00159 ui->treeWidget->resizeColumnToContents(0); 00160 this->ActivadoVisorImagenes=false; 00161 this->aceptadaEliminacion=false; 00162 this->preguntaSeguridad=false; 00163 this->ActivadoGuardado=false; 00164 this->DesactivarParteEdicion=false; 00165 this->DesactivarParteEdicionPortada=false; 00166 this->activadaCarga=false; 00167 this->creadaPortada=false; 00168 this->seHaCargado=false; 00169 ui->botonTexto->setDisabled(true); 00170 this->ui->pushUncheckAll->hide(); 00171 try{ 00172 00173 a=new Album(this); 00174 00175 }catch(std::exception& e){ 00176 Error *err=new Error(2, e.what(), this); 00177 err->LanzarDialogo(); 00178 delete err; 00179 exit(1); 00180 } 00181 this->hayDesplazamientoPagina=false; 00182 00183 00184 this->hayDesplazamientoPortadaFotos=false; 00185 this->hayDesplazamientoPortadaTextos=false; 00186 this->creadasPaginas=false; 00187 QDir directorio, directorioCasa; 00188 this->directorioCasaUsuario=directorioCasa.homePath(); 00189 00190 if(!directorio.exists(directorioCasa.homePath() + "/.openAlbum")){ 00191 try{ 00192 if(!directorio.mkdir(directorioCasa.homePath() + "/.openAlbum")){ 00193 //excepción 00194 throw std::ios_base::failure(tr("No pudo crearse el directorio").toStdString()); 00195 } 00196 }catch(std::exception& e){ 00197 Error *err=new Error(5, e.what(), this); 00198 err->LanzarDialogo(); 00199 delete err; 00200 exit(1); 00201 } 00202 } 00203 intro->setValorBarra(2); 00204 intro->setValorLabel(tr("Comprobando archivos..."), 2); 00205 00206 00207 for(int cont=2; cont<4; cont++){ 00208 ui->treeWidget->resizeColumnToContents(cont);} 00209 QFont copiaFuente=this->ui->botonTexto->font(); 00210 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 00211 this->ui->treeWidget->headerItem()->setFont(0, copiaFuente); 00212 this->ui->treeWidget->headerItem()->setFont(1, copiaFuente); 00213 this->ui->treeWidget->headerItem()->setFont(2, copiaFuente); 00214 this->ui->treeWidget->headerItem()->setFont(3, copiaFuente); 00215 this->ui->treeWidget->headerItem()->setFont(4, copiaFuente); 00216 this->ui->treeWidget->headerItem()->setFont(5, copiaFuente); 00217 ui->pushButtonEditar->hide(); 00218 ui->pushButtonTerminar->hide(); 00219 ui->pushPagSiguiente->setDisabled(true); 00220 ui->action_Avanzar_P_gina->setDisabled(true); 00221 ui->actionAvanzarBoton->setDisabled(true); 00222 ui->pushPagAnterior->setDisabled(true); 00223 ui->action_Retroceder_p_gina->setDisabled(true); 00224 ui->actionRetrocederBoton->setDisabled(true); 00225 ui->pushButtonEditarPagina->show(); 00226 ui->pushButtonTerminarPagina->show(); 00227 ui->pushButtonEditarPagina->setDisabled(true); 00228 ui->actionEditar->setDisabled(true); 00229 ui->actionEditarBoton->setDisabled(true); 00230 ui->actionTerminar_edici_n->setDisabled(true); 00231 ui->actionTerminarBoton->setDisabled(true); 00232 ui->pushButtonTerminarPagina->setDisabled(true); 00233 ui->action_Guardar->setDisabled(true); 00234 ui->actionGuardarBoton->setDisabled(true); 00235 ui->actionG_uardar_como->setDisabled(true); 00236 ui->actionGuardarComoBoton->setDisabled(true); 00237 IndicePaginas=0; 00238 dimensionWpagina=0; 00239 dimensionHpagina=0; 00240 00241 //Cargamos las miniaturas de las texturas 00242 00243 QDir *dir, *dirmarcos; 00244 QStringList *por, *pormarcos; 00245 QString path, pathmarcos; 00246 00247 00248 00249 try{ 00250 00251 path=directorioDeTrabajo.absolutePath()+"/textures/prev/"; 00252 pathmarcos=directorioDeTrabajo.absolutePath()+"/frames/"; 00253 dir=new QDir(path); 00254 dirmarcos=new QDir(pathmarcos); 00255 por=new QStringList("*.jpg"); 00256 pormarcos=new QStringList("*A.png"); 00257 }catch(std::exception& e){ 00258 Error *err=new Error(2, e.what(), this); 00259 err->LanzarDialogo(); 00260 delete err; 00261 exit(1); 00262 } 00263 QStringList fileNames = dir->entryList(*por); 00264 QStringList fileNamesMarcos = dirmarcos->entryList(*pormarcos); 00265 delete dir; 00266 delete dirmarcos; 00267 delete por; 00268 delete pormarcos; 00269 try{ 00270 if(fileNames.isEmpty()){ 00271 throw std::ios_base::failure(tr("No se pueden cargar las texturas.").toStdString()); 00272 } 00273 if(fileNamesMarcos.isEmpty()){ 00274 throw std::ios_base::failure(tr("No se pueden cargar los marcos.").toStdString()); 00275 } 00276 }catch(std::exception& e){ 00277 Error *err=new Error(4, e.what(), this); 00278 err->LanzarDialogo(); 00279 delete err; 00280 exit(1); 00281 } 00282 00283 00284 intro->setValorLabel(tr("Generando marcos..."), 3); 00285 intro->setValorBarra(3); 00286 for (int l =0; l < fileNamesMarcos.count(); l++){ 00287 00288 QGraphicsView *miniaturaMarco; 00289 QGraphicsScene *escenaMarco; 00290 00291 miniaturaMarco= new QGraphicsView(); 00292 miniaturaMarco->setFixedSize(141, 111); 00293 escenaMarco = new QGraphicsScene(); 00294 miniaturaMarco->setScene(escenaMarco); 00295 QImage *img=new QImage(); 00296 if(l==3){ 00297 intro->setValorBarra(4); 00298 } 00299 if(l==6){ 00300 intro->setValorBarra(5); 00301 } 00302 try{ 00303 QString filename= pathmarcos + fileNamesMarcos.at(l); 00304 img->load(filename); 00305 }catch(std::exception& e){ 00306 Error *err=new Error(4, e.what(), this); 00307 err->LanzarDialogo(); 00308 delete err; 00309 exit(1); 00310 } 00311 QPixmap image=QPixmap::fromImage(*img); 00312 miniaturaMarco->scene()->addPixmap(image.scaled((141*this->controlador->getWtexturas())/401, (111*this->controlador->getHtexturas())/184, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 00313 this->miniaturasMarcos.push_back(miniaturaMarco); 00314 delete img; 00315 } 00316 intro->setValorLabel(tr("Generando texturas..."), 4); 00317 00318 for (int i = 0; i < fileNames.count(); i++) { 00319 intro->setValorBarra(6+i); 00320 QGraphicsView *miniatura; 00321 QGraphicsScene *escena; 00322 miniatura= new QGraphicsView(); 00323 miniatura->setFixedSize(141, 111); 00324 escena = new QGraphicsScene(); 00325 miniatura->setScene(escena); 00326 QImage *img=new QImage(); 00327 try{ 00328 QString filename= path + fileNames.at(i); 00329 img->load(filename); 00330 }catch(std::exception& e){ 00331 Error *err=new Error(4, e.what(), this); 00332 err->LanzarDialogo(); 00333 delete err; 00334 exit(1); 00335 } 00336 QPixmap image=QPixmap::fromImage(*img); 00337 miniatura->scene()->addPixmap(image.scaled((141*this->controlador->getWtexturas())/401, (111*this->controlador->getHtexturas())/184, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 00338 this->miniaturasTexturas.push_back(miniatura); 00339 delete img; 00340 } 00341 00342 00343 QGraphicsScene *escena; 00344 QImage *img; 00345 try{ 00346 escena = new QGraphicsScene(); 00347 this->ui->imagePreview->setScene(escena); 00348 img = new QImage(); 00349 }catch(std::exception& e){ 00350 Error *err=new Error(2, e.what(), this); 00351 err->LanzarDialogo(); 00352 delete err; 00353 exit(1); 00354 } 00355 try{ 00356 img->load(directorioDeTrabajo.absolutePath() + "/data/imagePrev.png"); 00357 if(img->isNull()){ 00358 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 00359 } 00360 }catch(std::exception& e){ 00361 Error *err=new Error(4, e.what(), this); 00362 err->LanzarDialogo(); 00363 delete err; 00364 exit(1); 00365 } 00366 00367 QPixmap image=QPixmap::fromImage(*img); 00368 00369 this->ui->imagePreview->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 00370 this->ui->imagePreview->setStyleSheet("background: transparent; border: none"); 00371 delete img; 00372 00373 ui->action_Nuevo->setDisabled(true); 00374 ui->actionNuevoBoton->setDisabled(true); 00375 this->nadacreado=true; 00376 this->directoriodetrabajo=directorioDeTrabajo; 00377 intro->hide(); 00378 00379 delete intro; 00380 QIcon *iconoVentana=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/iconlargue.png"); 00381 this->setWindowIcon(*iconoVentana); 00382 delete iconoVentana; 00383 00384 QIcon *icono=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/add.png"); 00385 this->ui->actionA_adir_im_genes->setIcon(*icono); 00386 this->ui->actionAnnadirBoton->setIcon(*icono); 00387 delete icono; 00388 QIcon *icono1=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/textura.jpg"); 00389 this->ui->actionA_adir_te_xtura->setIcon(*icono1); 00390 delete icono1; 00391 00392 QIcon *icono2=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/abrir.png"); 00393 this->ui->actionAbrirBoton->setIcon(*icono2); 00394 this->ui->actionCar_gar->setIcon(*icono2); 00395 delete icono2; 00396 00397 QIcon *icono3=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/estrella.png"); 00398 this->ui->actionAcerca_de->setIcon(*icono3); 00399 delete icono3; 00400 00401 QIcon *icono4=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/icon_flecha_drch.png"); 00402 this->ui->actionAvanzarBoton->setIcon(*icono4); 00403 this->ui->action_Avanzar_P_gina->setIcon(*icono4); 00404 this->ui->pushPagSiguiente->setIcon(*icono4); 00405 delete icono4; 00406 00407 QIcon *icono5=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/elimina.png"); 00408 this->ui->actionEliminacion->setIcon(*icono5); 00409 this->ui->actionEliminarFotosBoton->setIcon(*icono5); 00410 this->ui->actionBorrar_selecci_n->setIcon(*icono5); 00411 delete icono5; 00412 00413 QIcon *icono6=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/deseleccionartodo.png"); 00414 this->ui->actionDeseleccionarTodoBoton->setIcon(*icono6); 00415 this->ui->actionDeseleccionar_todo->setIcon(*icono6); 00416 delete icono6; 00417 00418 QIcon *icono7=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/editar.png"); 00419 this->ui->actionEdicion->setIcon(*icono7); 00420 this->ui->actionEditar->setIcon(*icono7); 00421 this->ui->actionEditarBoton->setIcon(*icono7); 00422 delete icono7; 00423 00424 QIcon *icono8=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/tamannoboton.png"); 00425 this->ui->actionEditarTamBoton->setIcon(*icono8); 00426 this->ui->actionTama_o->setIcon(*icono8); 00427 delete icono8; 00428 00429 QIcon *icono9=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/borrar.png"); 00430 this->ui->actionBorrarBoton->setIcon(*icono9); 00431 this->ui->action_Eliminar->setIcon(*icono9); 00432 delete icono9; 00433 00434 QIcon *icono10=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/jpg.png"); 00435 this->ui->actionExportarJPGBoton->setIcon(*icono10); 00436 delete icono10; 00437 00438 QIcon *icono11=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/pdf.png"); 00439 this->ui->actionExportarPDFBoton->setIcon(*icono11); 00440 this->ui->actionE_xportar->setIcon(*icono11); 00441 this->ui->actionExportacion->setIcon(*icono11); 00442 delete icono11; 00443 00444 QIcon *icono12=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/guardarcomo.png"); 00445 this->ui->actionG_uardar_como->setIcon(*icono12); 00446 this->ui->actionGuardarComoBoton->setIcon(*icono12); 00447 delete icono12; 00448 00449 QIcon *icono13=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/guardar.png"); 00450 this->ui->actionGuardado->setIcon(*icono13); 00451 this->ui->actionGuardarBoton->setIcon(*icono13); 00452 this->ui->action_Guardar->setIcon(*icono13); 00453 delete icono13; 00454 00455 QIcon *icono14=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/imprimir.png"); 00456 this->ui->actionI_mprimir->setIcon(*icono14); 00457 this->ui->actionImprimirBoton->setIcon(*icono14); 00458 delete icono14; 00459 00460 QIcon *icono15=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/notificacion.png"); 00461 this->ui->actionNotificar_fallos->setIcon(*icono15); 00462 delete icono15; 00463 00464 QIcon *icono16=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/nuevo.png"); 00465 this->ui->actionNuevoBoton->setIcon(*icono16); 00466 this->ui->action_Nuevo->setIcon(*icono16); 00467 delete icono16; 00468 00469 QIcon *icono17=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/propiedades.png"); 00470 this->ui->actionPropiedades->setIcon(*icono17); 00471 this->ui->actionPropiedadesBoton->setIcon(*icono17); 00472 this->ui->action_Propiedades->setIcon(*icono17); 00473 delete icono17; 00474 00475 QIcon *icono18=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/icon_flecha_izq.png"); 00476 this->ui->actionRetrocederBoton->setIcon(*icono18); 00477 this->ui->action_Retroceder_p_gina->setIcon(*icono18); 00478 this->ui->pushPagAnterior->setIcon(*icono18); 00479 delete icono18; 00480 00481 QIcon *icono19=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/wizard.png"); 00482 this->ui->actionWizardBoton->setIcon(*icono19); 00483 this->ui->action_Lanzar_asistente->setIcon(*icono19); 00484 delete icono19; 00485 00486 QIcon *icono20=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/fineditar.png"); 00487 this->ui->actionTerminar_edici_n->setIcon(*icono20); 00488 this->ui->actionTerminarBoton->setIcon(*icono20); 00489 delete icono20; 00490 00491 QIcon *icono21=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/salir.png"); 00492 this->ui->action_Cerrar->setIcon(*icono21); 00493 this->ui->action_Salir->setIcon(*icono21); 00494 delete icono21; 00495 00496 QIcon *icono22=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/licencia.png"); 00497 this->ui->action_Licencia->setIcon(*icono22); 00498 delete icono22; 00499 00500 QIcon *icono23=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/indiceayuda.png"); 00501 this->ui->action_ndice->setIcon(*icono23); 00502 delete icono23; 00503 00504 QIcon *icono24=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/seleccionartodo.png"); 00505 this->ui->actionSeleccionarTodoBoton->setIcon(*icono24); 00506 this->ui->actionSeleccionar_todo->setIcon(*icono24); 00507 delete icono24; 00508 00509 00510 } 00511 00512 FormPrincipal::~FormPrincipal() 00513 { 00514 for(int i=0; i < ui->imagePreview->items().size(); i++){ 00515 delete ui->imagePreview->items().at(i); 00516 } 00517 delete ui->imagePreview->scene(); 00518 delete ui->imagePreview; 00519 for(int i=0; i < ui->plantillaPreview->items().size(); i++){ 00520 delete ui->plantillaPreview->items().at(i); 00521 } 00522 delete ui->plantillaPreview->scene(); 00523 delete ui->plantillaPreview; 00524 delete ui; 00525 delete this->a; 00526 for(unsigned i=0; i < this->miniaturas.size(); i++){ 00527 delete this->miniaturas[i]; 00528 } 00529 this->miniaturas.clear(); 00530 for(unsigned j=0; j < this->miniaturasTexturas.size(); j++){ 00531 delete this->miniaturasTexturas[j]; 00532 } 00533 this->miniaturasTexturas.clear(); 00534 for(unsigned t=0; t < this->miniaturasMarcos.size(); t++){ 00535 delete this->miniaturasMarcos[t]; 00536 } 00537 this->miniaturasMarcos.clear(); 00538 00539 } 00540 00541 void FormPrincipal::BotonEditar(){ 00542 if(this->ui->pushButtonEditar->isEnabled()){ 00543 this->ActivarEdicion(); 00544 }else{ 00545 if(this->ui->pushButtonEditarPagina->isEnabled()){ 00546 this->ActivarEdicionPagina(); 00547 } 00548 } 00549 } 00550 00551 void FormPrincipal::AddTextura(){ 00552 QDir dir; 00553 QString fileName = (QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), dir.homePath(), tr("Imágenes: JPEG (*.jpg *.jpeg *.jpe)"))); 00554 QTextCodec *linuxCodec1=QTextCodec::codecForCStrings(); 00555 QTextCodec *linuxCodec=QTextCodec::codecForName("UTF-8"); 00556 QTextCodec::setCodecForTr(linuxCodec); 00557 QTextCodec::setCodecForCStrings(linuxCodec); 00558 QTextCodec::setCodecForLocale(linuxCodec); 00559 QString pathOrigen="cp -r " + fileName; 00560 QString pathDestino=" " + this->directoriodetrabajo.absolutePath() + "/textures"; 00561 QTextCodec::setCodecForTr(linuxCodec1); 00562 QTextCodec::setCodecForCStrings(linuxCodec1); 00563 QTextCodec::setCodecForLocale(linuxCodec1); 00564 try{ 00565 int resultado=system(pathOrigen.append(pathDestino).toStdString().c_str()); 00566 if(resultado==1){ 00567 throw std::ios_base::failure(tr("El usuario no tiene permisos de root para añadir nuevas texturas").toStdString()); 00568 } 00569 }catch(std::exception& e){ 00570 Error *err=new Error(5, e.what(), this); 00571 err->LanzarDialogo(); 00572 delete err; 00573 exit(1); 00574 } 00575 QString pathDestinoTexPrev=this->directoriodetrabajo.absolutePath() + "/textures/prev/" + fileName.section("/", -1); 00576 QPixmap *pixTexNew; 00577 try{ 00578 pixTexNew= new QPixmap(fileName); 00579 if(pixTexNew->isNull()){ 00580 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 00581 } 00582 }catch(std::exception& e){ 00583 Error *err=new Error(4, e.what(), this); 00584 err->LanzarDialogo(); 00585 delete err; 00586 exit(1); 00587 } 00588 try{ 00589 if(!(pixTexNew->scaled(141, 111, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)).save(pathDestinoTexPrev)){ 00590 //excepción 00591 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 00592 } 00593 }catch(std::exception& e){ 00594 Error *err=new Error(5, e.what(), this); 00595 err->LanzarDialogo(); 00596 delete err; 00597 exit(1); 00598 } 00599 delete pixTexNew; 00600 00601 00602 QDir *dir2=new QDir(QString(this->directoriodetrabajo.absolutePath() + "/textures/prev")); 00603 QStringList *por=new QStringList("*.jpg"); 00604 00605 QStringList fileNamesNew = dir2->entryList(*por); 00606 delete dir2; 00607 delete por; 00608 for(unsigned eliminador=0; eliminador < this->miniaturasTexturas.size(); eliminador++){ 00609 delete this->miniaturasTexturas.at(eliminador); 00610 } 00611 this->miniaturasTexturas.clear(); 00612 for(int i=0; i < fileNamesNew.size(); i++){ 00613 //Ahora se crea la miniatura y se añade a las demás 00614 QGraphicsView *miniatura; 00615 QGraphicsScene *escena; 00616 00617 miniatura= new QGraphicsView(); 00618 miniatura->setFixedSize(141, 111); 00619 escena = new QGraphicsScene(); 00620 miniatura->setScene(escena); 00621 QImage *img=new QImage(); 00622 try{ 00623 00624 img->load(QString(this->directoriodetrabajo.absolutePath() + "/textures/" + fileNamesNew.at(i))); 00625 }catch(std::exception& e){ 00626 Error *err=new Error(4, e.what(), this); 00627 err->LanzarDialogo(); 00628 delete err; 00629 exit(1); 00630 } 00631 QPixmap image=QPixmap::fromImage(*img); 00632 delete img; 00633 miniatura->scene()->addPixmap(image.scaled((141*this->controlador->getWtexturas())/401, (111*this->controlador->getHtexturas())/184, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 00634 this->miniaturasTexturas.push_back(miniatura); 00635 } 00636 00637 } 00638 00639 void FormPrincipal::BotonTerminar(){ 00640 if(this->ui->pushButtonTerminar->isEnabled()){ 00641 this->DesactivarEdicion(); 00642 }else{ 00643 if(this->ui->pushButtonTerminarPagina->isEnabled()){ 00644 this->DesactivarEdicionPagina(); 00645 } 00646 00647 } 00648 } 00649 00650 void FormPrincipal::aplicarDimensiones(){ 00651 this->setFixedSize(this->controlador->getWPrincipal(), this->controlador->getHPrincipal()); 00652 //Visor de álbumes 00653 this->ui->visorAlbum->setGeometry(this->ui->visorAlbum->x()*(this->controlador->getWPrincipal())/1014, this->ui->visorAlbum->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWVisorAlbum(), this->controlador->getHVisorAlbum()); 00654 00655 //Visor de plantillas 00656 this->ui->plantillaPreview->setGeometry(this->ui->plantillaPreview->x()*(this->controlador->getWPrincipal())/1014, this->ui->plantillaPreview->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla()); 00657 00658 //Visor de imágenes 00659 this->ui->imagePreview->setGeometry(this->ui->imagePreview->x()*(this->controlador->getWPrincipal())/1014, this->ui->imagePreview->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes()); 00660 00661 //Treewidget de imágenes 00662 this->ui->treeWidget->setGeometry(this->ui->treeWidget->x()*(this->controlador->getWPrincipal())/1014, this->ui->treeWidget->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWtreeImagenes(), this->controlador->getHtreeImagenes()); 00663 00664 //Selector plantilla 00665 this->ui->selectorPlantilla->setGeometry(this->ui->selectorPlantilla->x()*(this->controlador->getWPrincipal())/1014, this->ui->selectorPlantilla->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWselectorPlantilla(), this->controlador->getHselectorPlantilla()); 00666 00667 //Botones 00668 this->ui->botonTexto->setGeometry(this->ui->botonTexto->x()*(this->controlador->getWPrincipal())/1014, this->ui->botonTexto->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonTexto(), this->controlador->getHbotonTexto()); 00669 this->ui->selectFoto1->setGeometry(this->ui->selectFoto1->x()*(this->controlador->getWPrincipal())/1014, this->ui->selectFoto1->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonFrontal(), this->controlador->getHbotonFrontal()); 00670 this->ui->selectFoto2->setGeometry(this->ui->selectFoto2->x()*(this->controlador->getWPrincipal())/1014, this->ui->selectFoto2->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonTrasero(), this->controlador->getHbotonTrasero()); 00671 this->ui->activatedPlantilla->setGeometry(this->ui->activatedPlantilla->x()*(this->controlador->getWPrincipal())/1014, this->ui->activatedPlantilla->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonPlantilla(), this->controlador->getHbotonPlantilla()); 00672 this->ui->botonPrueba->setGeometry(this->ui->botonPrueba->x()*(this->controlador->getWPrincipal())/1014, this->ui->botonPrueba->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonCrearPortada(), this->controlador->getHbotonCrearPortada()); 00673 this->ui->pushButtonFondoPortada->setGeometry(this->ui->pushButtonFondoPortada->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushButtonFondoPortada->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonFondo(), this->controlador->getHbotonFondo()); 00674 this->ui->pushCrearPaginas->setGeometry(this->ui->pushCrearPaginas->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushCrearPaginas->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonCrearPagina(), this->controlador->getHbotonCrearPagina()); 00675 this->ui->pushButtonEditar->setGeometry(this->ui->pushButtonEditar->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushButtonEditar->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonEditarPortada(), this->controlador->getHbotonEditarPortada()); 00676 this->ui->pushButtonEditarPagina->setGeometry(this->ui->pushButtonEditarPagina->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushButtonEditarPagina->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonEditarPagina(), this->controlador->getHbotonEditarPagina()); 00677 this->ui->pushButtonTerminar->setGeometry(this->ui->pushButtonTerminar->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushButtonTerminar->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonTerminarPortada(), this->controlador->getHbotonTerminarPortada()); 00678 this->ui->pushButtonTerminarPagina->setGeometry(this->ui->pushButtonTerminarPagina->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushButtonTerminarPagina->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonTerminarPagina(), this->controlador->getHbotonTerminarPagina()); 00679 this->ui->pushOpen->setGeometry(this->ui->pushOpen->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushOpen->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonAbrir(), this->controlador->getHbotonAbrir()); 00680 this->ui->pushCheckAll->setGeometry(this->ui->pushCheckAll->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushCheckAll->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonCheck(), this->controlador->getHbotonCheck()); 00681 this->ui->pushUncheckAll->setGeometry(this->ui->pushUncheckAll->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushUncheckAll->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonUncheck(), this->controlador->getHbotonUncheck()); 00682 this->ui->pushPagAnterior->setGeometry(this->ui->pushPagAnterior->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushPagAnterior->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonAnterior(), this->controlador->getHbotonAnterior()); 00683 this->ui->pushPagSiguiente->setGeometry(this->ui->pushPagSiguiente->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushPagSiguiente->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonSiguiente(), this->controlador->getHbotonSiguiente()); 00684 this->ui->pushRemoveSelect->setGeometry(this->ui->pushRemoveSelect->x()*(this->controlador->getWPrincipal())/1014, this->ui->pushRemoveSelect->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWbotonRemove(), this->controlador->getHbotonRemove()); 00685 00686 this->ui->groupBox->setGeometry(this->ui->groupBox->x()*(this->controlador->getWPrincipal())/1014, this->ui->groupBox->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWgroupBox(), this->controlador->getHgroupBox()); 00687 this->ui->groupBox_4->setGeometry(this->ui->groupBox_4->x()*(this->controlador->getWPrincipal())/1014, this->ui->groupBox_4->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWgroupBox_4(), this->controlador->getHgroupBox_4()); 00688 this->ui->groupBox_5->setGeometry(this->ui->groupBox_5->x()*(this->controlador->getWPrincipal())/1014, this->ui->groupBox_5->y()*(this->controlador->getHPrincipal())/705, this->controlador->getWgroupBox_5(), this->controlador->getHgroupBox_5()); 00689 00690 //Texto de los botones 00691 00692 QFont copiaFuente=this->ui->botonTexto->font(); 00693 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 00694 this->ui->botonTexto->setFont(copiaFuente); 00695 this->ui->activatedPlantilla->setFont(copiaFuente); 00696 this->ui->botonPrueba->setFont(copiaFuente); 00697 this->ui->pushButtonEditar->setFont(copiaFuente); 00698 this->ui->pushButtonEditarPagina->setFont(copiaFuente); 00699 this->ui->pushButtonFondoPortada->setFont(copiaFuente); 00700 this->ui->pushButtonTerminar->setFont(copiaFuente); 00701 this->ui->pushButtonTerminarPagina->setFont(copiaFuente); 00702 this->ui->pushCheckAll->setFont(copiaFuente); 00703 this->ui->pushCrearPaginas->setFont(copiaFuente); 00704 this->ui->pushOpen->setFont(copiaFuente); 00705 this->ui->pushRemoveSelect->setFont(copiaFuente); 00706 this->ui->selectFoto1->setFont(copiaFuente); 00707 this->ui->pushUncheckAll->setFont(copiaFuente); 00708 this->ui->selectFoto2->setFont(copiaFuente); 00709 this->ui->pushPagAnterior->setIconSize(QSize(this->controlador->getTamIconoFlechas(), this->controlador->getTamIconoFlechas())); 00710 this->ui->pushPagSiguiente->setIconSize(QSize(this->controlador->getTamIconoFlechas(), this->controlador->getTamIconoFlechas())); 00711 this->ui->selectorPlantilla->headerItem()->setFont(0, copiaFuente); 00712 this->ui->selectorPlantilla->headerItem()->setFont(1, copiaFuente); 00713 00714 ui->selectorPlantilla->headerItem()->setFont(0, copiaFuente); 00715 ui->selectorPlantilla->headerItem()->setFont(1, copiaFuente); 00716 } 00717 00718 void FormPrincipal::CreacionPaginasFijas(QString file, QString imagenfondo){ 00719 00720 int numfotosporpag; 00721 Parser parser(file.toStdString(), this); 00722 ticpp::Element* element = parser.root(); 00723 parser.get_attribute("imagen", element, &numfotosporpag); 00724 unsigned contad=0; 00725 00726 while(contad<a->GetVectorImagenes().size()){ 00727 Pagina *pag; 00728 try{ 00729 pag=new Pagina(0,0,this); 00730 pag->LoadRutaPlantilla(file); 00731 }catch(std::exception& e){ 00732 Error *err=new Error(2, e.what(), this); 00733 err->LanzarDialogo(); 00734 delete err; 00735 exit(1); 00736 } 00737 std::vector<ticpp::Element*> areas; 00738 std::string mascara=parser.get_attribute("mascara", element); 00739 if(mascara!="no"){ 00740 QString ruta=QString::fromStdString(mascara); 00741 pag->activarMascara(ruta); 00742 } 00743 parser.find("area_imagen", areas, parser.find("areas_imagen")); 00744 for(std::vector<ticpp::Element*>::iterator i = areas.begin(); i != areas.end(); i++){ 00745 QString ruta; 00746 int w, h, x, y; 00747 if(contad < a->GetVectorImagenes().size()){ 00748 try{ 00749 ruta=a->GetVectorImagenes().at(contad).ruta; 00750 }catch(std::exception& e){ 00751 Error *err=new Error(1, e.what(), this); 00752 err->LanzarDialogo(); 00753 delete err; 00754 exit(1); 00755 } 00756 std::string pos; 00757 parser.get_attribute("w", *i, &w); 00758 parser.get_attribute("h", *i, &h); 00759 parser.get_attribute("pos_x", *i, &x); 00760 parser.get_attribute("pos_y", *i, &y); 00761 pos=parser.get_attribute("pos", *i); 00762 pag->LoadFoto(ruta, w*(this->controlador->getWVisorAlbum())/462, h*(this->controlador->getHVisorAlbum())/321, x*(this->controlador->getWVisorAlbum())/462, y*(this->controlador->getHVisorAlbum())/321, pos); 00763 00764 } 00765 contad++; 00766 } 00767 00768 00769 pag->DesactivarColordefondo(); 00770 pag->LoadFondo(imagenfondo); 00771 a->paginas.push_back(pag); 00772 } 00773 ui->pushPagSiguiente->show(); 00774 ui->pushPagAnterior->show(); 00775 if(this->IndicePaginas==0){ 00776 ui->pushPagAnterior->setDisabled(true); 00777 ui->action_Retroceder_p_gina->setDisabled(true); 00778 ui->actionRetrocederBoton->setDisabled(true); 00779 } 00780 00781 } 00782 Album* FormPrincipal::getAlbum(){ 00783 return this->a; 00784 } 00785 QString FormPrincipal::GetFechaCreacion(){ 00786 return this->fechaCreacion; 00787 } 00788 00789 QString FormPrincipal::GetRutaGuardado(){ 00790 return this->rutaGuardado; 00791 } 00792 00793 QWizardPage* FormPrincipal::crearPaginaIntro(){ 00794 this->intro=new introduccionWizard(this,this); 00795 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/img_intro_wizard.bmp"); 00796 00797 intro->setPixmap(QWizard::WatermarkPixmap, *pix); 00798 QFile existencia; 00799 QDir dir; 00800 intro->setWindowFlags(Qt::WindowCloseButtonHint); 00801 if(existencia.exists(dir.homePath() + "/.openAlbum/configuracion.xml")){ 00802 Parser par(dir.homePath().toStdString() + "/.openAlbum/configuracion.xml",0); 00803 ticpp::Element* element = par.root(); 00804 std::string aux=par.get_attribute("wizard", element); 00805 if(aux!="si"){ 00806 intro->checkCasilla(); 00807 00808 } 00809 } 00810 00811 delete pix; 00812 return intro; 00813 } 00814 00815 QWizardPage* FormPrincipal::crearPaginaFinal(bool cambio){ 00816 finWizard *fin=new finWizard(this); 00817 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/img_intro_wizard.bmp"); 00818 00819 fin->setPixmap(QWizard::WatermarkPixmap, *pix); 00820 if(cambio){ 00821 fin->setTexto(tr("Lo sentimos, el asistente de creación de álbum no ha finalizado correctamente. No se ha podido crear el álbum de fotos digital."), tr("Gracias por utilizar este asistente. Una vez cierre el asistente podrá crear su álbum de forma manual. Si necesita volver a utilizar el asistente solo tiene que hacer click en Archivo -> Lanzar asistente."), tr("Si desconoce el fallo por el cual no se ha finalizado correctamente, indiquenoslo en Ayuda -> Contacto. Intentaremos solucionarlo en la próxima actualización.")); 00822 00823 } 00824 delete pix; 00825 00826 return fin; 00827 } 00828 00829 QWizardPage* FormPrincipal::crearPaginaFotos(){ 00830 this->fotos= new fotosWizard(this, this); 00831 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/logo_pequenno.bmp"); 00832 this->fotos->setPixmap(QWizard::LogoPixmap, *pix); 00833 this->fotos->setTitle(tr("Selección de Fotos.")); 00834 this->fotos->setSubTitle(tr("Selecciona las fotos que desea incluir en el álbum y haz click en \"Siguiente\".")); 00835 this->fotos->isCommitPage(); 00836 delete pix; 00837 00838 return fotos; 00839 } 00840 00841 QWizardPage* FormPrincipal::crearPaginaTamanno(){ 00842 tamannoWizard *tamanno=new tamannoWizard(this, this); 00843 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/logo_pequenno.bmp"); 00844 tamanno->setPixmap(QWizard::LogoPixmap, *pix); 00845 tamanno->setTitle(tr("Tamaño del álbum.")); 00846 tamanno->setSubTitle(tr("Selecciona el tamaño deseado para el álbum y haz click en \"Siguiente\".")); 00847 00848 delete pix; 00849 00850 return tamanno; 00851 } 00852 void FormPrincipal::ResetSelectorPlantilla(){ 00853 00854 this->ui->selectorPlantilla->clear(); 00855 this->ui->botonTexto->setDisabled(true); 00856 this->ui->botonPrueba->setDisabled(true); 00857 this->ui->activatedPlantilla->setEnabled(true); 00858 this->ui->selectFoto1->setDisabled(true); 00859 this->ui->selectFoto2->setDisabled(true); 00860 this->ui->pushButtonFondoPortada->setDisabled(true); 00861 } 00862 00863 QWizardPage* FormPrincipal::crearPaginaFondoPortada(){ 00864 fondoPortadaWizard *fondoportada= new fondoPortadaWizard(this, this); 00865 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/logo_pequenno.bmp"); 00866 fondoportada->setPixmap(QWizard::LogoPixmap, *pix); 00867 fondoportada->setTitle(tr("Creación de la portada.")); 00868 fondoportada->setSubTitle(tr("Para finalizar la portada, selecciona el fondo y las imágenes a incluir, y haz click en \"Siguiente\".")); 00869 00870 00871 this->ui->plantillaPreview->scene()->clear(); 00872 this->ResetSelectorPlantilla(); 00873 this->fondoPortada=fondoportada; 00874 delete pix; 00875 return fondoportada; 00876 } 00877 00878 QWizardPage* FormPrincipal::crearPaginaPortada(){ 00879 this->portada=new portadaWizard(this, this); 00880 QPixmap *pix=new QPixmap(this->directoriodetrabajo.absolutePath() + "/data/logo_pequenno.bmp"); 00881 this->portada->setPixmap(QWizard::LogoPixmap, *pix); 00882 this->portada->setTitle(tr("Creación de la portada.")); 00883 this->portada->setSubTitle(tr("Para comenzar a crear tu álbum, selecciona una plantilla para la portada y haz click en \"Siguiente\".")); 00884 00885 this->portada->activarSelectorPlantillas(); 00886 delete pix; 00887 00888 return portada; 00889 } 00890 00891 void FormPrincipal::Guardar(){ 00892 QProgressBar *barra= new QProgressBar(this); 00893 int wAux=this->ui->statusBar->width(); 00894 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 00895 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 00896 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 00897 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 00898 static int ii; 00899 barra->setMinimum(0); 00900 barra->setMaximum(8+this->a->paginas.size()); 00901 QString texto, imagenFondoPortada, redPortada, greenPortada, bluePortada; 00902 bool cancelado=false; 00903 if(!this->ActivadoGuardado){ 00904 //Abrimos el diálogo 00905 QFileDialog::Options options; 00906 QString selectedFilter="OPA: Open Album File (*.opa)"; 00907 QString directorio= this->directorioCasaUsuario; 00908 QString fileName = QFileDialog::getSaveFileName(this,tr("Guardar album"), directorio , tr("OPA: Open Album File (*.opa)"), &selectedFilter, options); 00909 00910 if(fileName.isEmpty()){ 00911 cancelado=true; 00912 }else{ 00913 this->rutaGuardado= fileName; 00914 this->ActivadoGuardado=true; 00915 } 00916 QString fileNm; 00917 if(!this->rutaGuardado.contains(".opa")){ 00918 fileNm=this->rutaGuardado + ".opa"; 00919 this->rutaGuardado= this->rutaGuardado + ".opa"; 00920 }else{ 00921 fileNm=this->rutaGuardado; 00922 } 00923 QFile existencia; 00924 if(existencia.exists(fileNm)){ 00925 this->EliminarAlbum(fileNm, false); 00926 } 00927 } 00928 if(!cancelado){ 00929 barra->show(); 00930 barra->setValue(1); 00931 QString fileNm; 00932 if(!this->rutaGuardado.contains(".opa")){ 00933 fileNm=this->rutaGuardado + ".opa"; 00934 this->rutaGuardado= this->rutaGuardado + ".opa"; 00935 }else{ 00936 fileNm=this->rutaGuardado; 00937 } 00938 00939 00940 barra->setValue(2); 00941 00942 QFile file(fileNm.toStdString().c_str()); 00943 00944 try{ 00945 00946 file.open(QIODevice::WriteOnly | QIODevice::Truncate); 00947 00948 }catch(std::exception& e){ 00949 Error *err=new Error(5, e.what(), this); 00950 err->LanzarDialogo(); 00951 delete err; 00952 exit(1); 00953 } 00954 QTextStream textStream(&file); 00955 bool ColorFondo=this->a->portada->ColordeFondo(); 00956 QString subrayadoFrontal, subrayadoTrasero, subrayadoLateral, negritaFrontal, negritaLateral, negritaTrasero, cursivaFrontal, cursivaLateral, cursivaTrasero; 00957 if(this->a->portada->SubrayadoTextoFrontal()){ 00958 subrayadoFrontal="si"; 00959 }else{ 00960 subrayadoFrontal="no"; 00961 } 00962 00963 if(this->a->portada->SubrayadoTextoLateral()){ 00964 subrayadoLateral="si"; 00965 }else{ 00966 subrayadoLateral="no"; 00967 } 00968 00969 if(this->a->portada->SubrayadoTextoTrasera()){ 00970 subrayadoTrasero="si"; 00971 }else{ 00972 subrayadoTrasero="no"; 00973 } 00974 barra->setValue(3); 00975 if(this->a->portada->NegritaTextoFrontal()){ 00976 negritaFrontal="si"; 00977 }else{ 00978 negritaFrontal="no"; 00979 } 00980 00981 if(this->a->portada->NegritaTextoLateral()){ 00982 negritaLateral="si"; 00983 }else{ 00984 negritaLateral="no"; 00985 } 00986 00987 if(this->a->portada->NegritaTextoTrasera()){ 00988 negritaTrasero="si"; 00989 }else{ 00990 negritaTrasero="no"; 00991 } 00992 barra->setValue(4); 00993 if(this->a->portada->CursivaTextoFrontal()){ 00994 cursivaFrontal="si"; 00995 }else{ 00996 cursivaFrontal="no"; 00997 } 00998 00999 01000 if(this->a->portada->CursivaTextoLateral()){ 01001 cursivaLateral="si"; 01002 }else{ 01003 cursivaLateral="no"; 01004 } 01005 01006 01007 if(this->a->portada->CursivaTextoTrasera()){ 01008 cursivaTrasero="si"; 01009 }else{ 01010 cursivaTrasero="no"; 01011 } 01012 01013 01014 if(ColorFondo){ 01015 01016 redPortada=QString::number(this->a->portada->FondoClr().red()); 01017 greenPortada=QString::number(this->a->portada->FondoClr().green()); 01018 bluePortada=QString::number(this->a->portada->FondoClr().blue()); 01019 }else{ 01020 01021 01022 redPortada="0"; 01023 greenPortada="0"; 01024 bluePortada="0"; 01025 } 01026 barra->setValue(5); 01027 QString siOno=""; 01028 if(this->creadasPaginas){ 01029 siOno="si"; 01030 }else{ 01031 siOno="no"; 01032 01033 } 01034 QString nombreSerieFondoPortada=""; 01035 QString separador= "_"; 01036 if(!ColorFondo){ 01037 QPixmap *pixFondo; 01038 try{ 01039 pixFondo= new QPixmap(this->a->portada->FondoImg()); 01040 if(pixFondo->isNull()){ 01041 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 01042 } 01043 }catch(std::exception& e){ 01044 Error *err=new Error(4, e.what(), this); 01045 err->LanzarDialogo(); 01046 delete err; 01047 exit(1); 01048 } 01049 nombreSerieFondoPortada= nombreSerieFondoPortada + this->directorioCasaUsuario +"/.openAlbum/" + this->rutaGuardado.section("/", -1) + separador + "fondo" + separador + "portada.JPG"; 01050 try{ 01051 if(!pixFondo->save(nombreSerieFondoPortada)){ 01052 //excepción 01053 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01054 } 01055 }catch(std::exception& e){ 01056 Error *err=new Error(5, e.what(), this); 01057 err->LanzarDialogo(); 01058 delete err; 01059 exit(1); 01060 } 01061 delete pixFondo; 01062 }else{ 01063 nombreSerieFondoPortada="no"; 01064 } 01065 static QPixmap *pixFron, *pixTras; 01066 try{ 01067 if(this->a->portada->hayImagenFrontal()){ 01068 pixFron= new QPixmap(this->a->portada->RutaFotoFrontal()); 01069 if(pixFron->isNull()){ 01070 throw std::ios_base::failure(tr("No pudo abrirse la imagen frontal de la portada.").toStdString()); 01071 } 01072 } 01073 if(this->a->portada->hayImagenTrasera()){ 01074 pixTras= new QPixmap(this->a->portada->RutaFotoTrasera()); 01075 if(pixTras->isNull()){ 01076 throw std::ios_base::failure(tr("No pudo abrirse la imagen trasera de la portada.").toStdString()); 01077 } 01078 } 01079 01080 01081 }catch(std::exception& e){ 01082 Error *err=new Error(4, e.what(), this); 01083 err->LanzarDialogo(); 01084 delete err; 01085 exit(1); 01086 } 01087 QString nombreSerieFron; 01088 QString nombreSerieTras; 01089 if(this->a->portada->hayImagenFrontal()){ 01090 nombreSerieFron= this->directorioCasaUsuario + "/.openAlbum/"; 01091 }else{ 01092 nombreSerieFron="no"; 01093 } 01094 if(this->a->portada->hayImagenTrasera()){ 01095 nombreSerieTras= this->directorioCasaUsuario + "/.openAlbum/"; 01096 }else{ 01097 nombreSerieTras="no"; 01098 } 01099 01100 QString portada, fotoFron, fotoTras; 01101 portada="portada"; 01102 if(this->a->portada->hayImagenFrontal()){ 01103 fotoFron="frontal"; 01104 nombreSerieFron= nombreSerieFron + this->rutaGuardado.section("/", -1) + separador + portada + separador + fotoFron +".JPG"; 01105 } 01106 if(this->a->portada->hayImagenTrasera()){ 01107 fotoTras="trasera"; 01108 nombreSerieTras= nombreSerieTras + this->rutaGuardado.section("/", -1) + separador + portada + separador + fotoTras +".JPG"; 01109 } 01110 barra->setValue(6); 01111 01112 try{ 01113 if(this->a->portada->hayImagenFrontal()){ 01114 if(!pixFron->save(nombreSerieFron)){ 01115 //excepción 01116 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01117 } 01118 } 01119 if(this->a->portada->hayImagenTrasera()){ 01120 if(!pixTras->save(nombreSerieTras)){ 01121 //excepción 01122 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01123 } 01124 } 01125 }catch(std::exception& e){ 01126 Error *err=new Error(5, e.what(), this); 01127 err->LanzarDialogo(); 01128 delete err; 01129 exit(1); 01130 } 01131 delete pixFron; 01132 delete pixTras; 01133 QString despFP, despTP; 01134 QString posXNuevoFrontal, posYNuevoFrontal, posXNuevoTrasero, posYNuevoTrasero; 01135 QString totalFrontal=""; 01136 QString totalTrasero=""; 01137 if(this->hayDesplazamientoPortadaFotos){ 01138 despFP="si"; 01139 posXNuevoFrontal.setNum(this->a->portada->PosicionXImagenFrontal()); 01140 posYNuevoFrontal.setNum(this->a->portada->PosicionYImagenFrontal()); 01141 posXNuevoTrasero.setNum(this->a->portada->PosicionXImagenTrasera()); 01142 posYNuevoTrasero.setNum(this->a->portada->PosicionYImagenTrasera()); 01143 totalFrontal= totalFrontal + "\" posXNueva=\"" + posXNuevoFrontal + "\" posYNueva=\"" + posYNuevoFrontal; 01144 totalTrasero= totalTrasero + "\" posXNueva=\"" + posXNuevoTrasero + "\" posYNueva=\"" + posYNuevoTrasero; 01145 }else{ 01146 despFP="no"; 01147 } 01148 barra->setValue(7); 01149 if(this->hayDesplazamientoPortadaTextos){ 01150 despTP="si"; 01151 }else{ 01152 despTP="no"; 01153 } 01154 //Ahora tratamos los caracteres especiales de los xml 01155 QString textoFrontal, textoTrasero, textoLateral; 01156 textoFrontal = this->a->portada->TextoFrontal(); 01157 if(this->a->portada->TextoFrontal().contains("&")){ 01158 01159 int index=0; 01160 while(textoFrontal.contains("&")){ 01161 index = textoFrontal.indexOf("&", 0); 01162 textoFrontal.replace(index,1, "#amp"); 01163 } 01164 } 01165 01166 if(this->a->portada->TextoFrontal().contains("\"")){ 01167 01168 int index=0; 01169 while(textoFrontal.contains("\"")){ 01170 index = textoFrontal.indexOf("\"", 0); 01171 textoFrontal.replace(index,1, "#quot"); 01172 } 01173 } 01174 01175 if(this->a->portada->TextoFrontal().contains("<")){ 01176 01177 int index=0; 01178 while(textoFrontal.contains("<")){ 01179 index = textoFrontal.indexOf("<", 0); 01180 textoFrontal.replace(index,1, "#lt"); 01181 } 01182 } 01183 01184 if(this->a->portada->TextoFrontal().contains(">")){ 01185 01186 int index=0; 01187 while(textoFrontal.contains(">")){ 01188 index = textoFrontal.indexOf(">", 0); 01189 textoFrontal.replace(index,1, "#gt"); 01190 } 01191 } 01192 01193 if(this->a->portada->TextoFrontal().contains("'")){ 01194 01195 int index=0; 01196 while(textoFrontal.contains("'")){ 01197 index = textoFrontal.indexOf("'", 0); 01198 textoFrontal.replace(index,1, "#apos"); 01199 } 01200 } 01201 textoLateral = this->a->portada->TextoLateral(); 01202 if(this->a->portada->TextoLateral().contains("&")){ 01203 01204 int index=0; 01205 while(textoLateral.contains("&")){ 01206 index = textoLateral.indexOf("&", 0); 01207 textoLateral.replace(index,1, "#amp"); 01208 } 01209 } 01210 01211 if(this->a->portada->TextoLateral().contains("\"")){ 01212 01213 int index=0; 01214 while(textoLateral.contains("\"")){ 01215 index = textoLateral.indexOf("\"", 0); 01216 textoLateral.replace(index,1, "#quot"); 01217 } 01218 } 01219 01220 01221 if(this->a->portada->TextoLateral().contains("<")){ 01222 01223 int index=0; 01224 while(textoLateral.contains("<")){ 01225 index = textoLateral.indexOf("<", 0); 01226 textoLateral.replace(index,1, "#lt"); 01227 } 01228 } 01229 01230 if(this->a->portada->TextoLateral().contains(">")){ 01231 01232 int index=0; 01233 while(textoLateral.contains(">")){ 01234 index = textoLateral.indexOf(">", 0); 01235 textoLateral.replace(index,1, "#gt"); 01236 } 01237 } 01238 01239 if(this->a->portada->TextoLateral().contains("'")){ 01240 01241 int index=0; 01242 while(textoLateral.contains("'")){ 01243 index = textoLateral.indexOf("'", 0); 01244 textoLateral.replace(index,1, "#apos"); 01245 } 01246 } 01247 textoTrasero = this->a->portada->TextoTrasera(); 01248 if(this->a->portada->TextoTrasera().contains("&")){ 01249 01250 int index=0; 01251 while(textoTrasero.contains("&")){ 01252 index = textoTrasero.indexOf("&", 0); 01253 textoTrasero.replace(index,1, "#amp"); 01254 } 01255 } 01256 01257 01258 if(this->a->portada->TextoTrasera().contains("\"")){ 01259 01260 int index=0; 01261 while(textoTrasero.contains("\"")){ 01262 index = textoTrasero.indexOf("\"", 0); 01263 textoTrasero.replace(index,1, "#quot"); 01264 } 01265 } 01266 01267 01268 if(this->a->portada->TextoTrasera().contains("<")){ 01269 01270 int index=0; 01271 while(textoTrasero.contains("<")){ 01272 index = textoTrasero.indexOf("<", 0); 01273 textoTrasero.replace(index,1, "#lt"); 01274 } 01275 } 01276 01277 01278 if(this->a->portada->TextoTrasera().contains(">")){ 01279 01280 int index=0; 01281 while(textoTrasero.contains(">")){ 01282 index = textoTrasero.indexOf(">", 0); 01283 textoTrasero.replace(index,1, "#gt"); 01284 } 01285 } 01286 01287 01288 if(this->a->portada->TextoTrasera().contains("'")){ 01289 01290 int index=0; 01291 while(textoTrasero.contains("'")){ 01292 index = textoTrasero.indexOf("'", 0); 01293 textoTrasero.replace(index,1, "#apos"); 01294 } 01295 } 01296 // ahora modificar la carga y posteriormente hacer lo mismo para página 01297 QString creado("no"); 01298 if(this->creadoConAsistente){ 01299 creado="si"; 01300 } 01301 QString textura("no"); 01302 if(this->seleccionadaTextura){ 01303 textura="si"; 01304 } 01305 QString orden(""); 01306 if(this->getOrdenacionAlfabetica()){ 01307 orden="alfabetica"; 01308 }else{ 01309 if(this->getOrdenacionFechaCreciente()){ 01310 orden="fechascreciente"; 01311 }else{ 01312 if(this->getOrdenacionFechaDecreciente()){ 01313 orden="fechasdecreciente"; 01314 }else{ 01315 orden="ordenpersonalizado"; 01316 } 01317 } 01318 } 01319 QString cadenaTextoLateral=""; 01320 QString cadenaTextoFrontal=""; 01321 QString cadenaTextoTrasero=""; 01322 if(this->a->portada->hayTextoLateral()){ 01323 cadenaTextoLateral=" <texto_lat texto=\"" + textoLateral + "\" fuente=\"" + this->a->portada->FuenteTextoLateral().toString() + "\" negrita=\"" + negritaLateral + "\" subrayado=\"" + subrayadoLateral + "\" cursiva=\"" + cursivaLateral +"\" red=\"" + QString::number(this->a->portada->ColorTextoLateral().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoLateral().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoLateral().blue()) + "\"/>\n"; 01324 } 01325 if(this->a->portada->hayTextoFrontal()){ 01326 cadenaTextoFrontal=" <texto_fro texto=\"" + textoFrontal + "\" fuente=\"" + this->a->portada->FuenteTextoFrontal().toString() + "\" negrita=\"" + negritaFrontal + "\" subrayado=\"" + subrayadoFrontal + "\" cursiva=\"" + cursivaFrontal + "\" red=\"" + QString::number(this->a->portada->ColorTextoFrontal().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoFrontal().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoFrontal().blue()) + "\"/>\n"; 01327 } 01328 if(this->a->portada->hayTextoTrasero()){ 01329 cadenaTextoTrasero=" <texto_tra texto=\"" + textoTrasero + "\" fuente=\"" + this->a->portada->FuenteTextoTrasera().toString() + "\" negrita=\"" + negritaTrasero + "\" subrayado=\"" + subrayadoTrasero + "\" cursiva=\"" + cursivaTrasero + "\" red=\"" + QString::number(this->a->portada->ColorTextoTrasera().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoTrasera().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoTrasera().blue()) + "\"/>\n"; 01330 } 01331 if(this->a->portada->GetEditada()){ 01332 texto = "<album orden=\"" + orden + "\" asistente=\"" + creado + "\" fecha=\"" + this->fechaCreacion + "\" paginas=\"" + siOno + "\">\n <portada textura=\"" + textura + "\" plantilla=\"" + this->a->portada->RutaPlantilla() + "\" imagen_fondo=\"" + nombreSerieFondoPortada +"\" red=\""+ redPortada +"\" green=\"" + greenPortada + "\" blue=\""+ bluePortada +"\" tam_w=\"" + QString::number(this->a->portada->GetW()) + "\" tam_h=\"" + QString::number(this->a->portada->GetH()) + "\" despFotos=\"" + despFP + "\" despTextos=\"" + despTP + "\">\n" + cadenaTextoLateral + cadenaTextoFrontal + cadenaTextoTrasero + " <imagen_fro ruta=\"" + nombreSerieFron + totalFrontal + "\"/>\n <imagen_tra ruta=\"" + nombreSerieTras + totalTrasero +"\"/>\n <Desplazamientos>\n" + this->portadaDesplazada + " </Desplazamientos>\n </portada>\n"; 01333 }else{ 01334 texto = "<album orden=\"" + orden + "\" asistente=\"" + creado + "\" fecha=\"" + this->fechaCreacion + "\" paginas=\"" + siOno + "\">\n <portada textura=\"" + textura + "\" plantilla=\"" + this->a->portada->RutaPlantilla() + "\" imagen_fondo=\"" + nombreSerieFondoPortada +"\" red=\""+ redPortada +"\" green=\"" + greenPortada + "\" blue=\""+ bluePortada +"\" tam_w=\"" + QString::number(this->a->portada->GetW()) + "\" tam_h=\"" + QString::number(this->a->portada->GetH()) + "\" despFotos=\"" + despFP + "\" despTextos=\"" + despTP + "\">\n" + cadenaTextoLateral + cadenaTextoFrontal + cadenaTextoTrasero + " <imagen_fro ruta=\"" + nombreSerieFron + totalFrontal +"\"/>\n <imagen_tra ruta=\"" + nombreSerieTras + totalTrasero + "\"/>\n </portada>\n"; 01335 } 01336 QString texto2, texto3, texto4, texto5, texto6, texto8, texto9, textoFinal; 01337 texto5=""; 01338 texto2=""; 01339 barra->setValue(8); 01340 if(this->creadasPaginas){ 01341 int contadNumPagina=0; 01342 01343 01344 for(unsigned i=0; i< this->a->paginas.size(); i++){ 01345 barra->setValue(8+i); 01346 QString imagenFondoPagina, redFondoPagina, greenFondoPagina, blueFondoPagina, editada; 01347 editada=""; 01348 if(this->a->GetPagina(i)->ColordeFondo()){ 01349 imagenFondoPagina="no"; 01350 redFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().red()); 01351 greenFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().green()); 01352 blueFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().blue()); 01353 }else{ 01354 QPixmap *pixFondoPag; 01355 try{ 01356 pixFondoPag= new QPixmap(this->a->GetPagina(i)->GetFondoImagen()); 01357 if(pixFondoPag->isNull()){ 01358 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la pagina.").toStdString()); 01359 } 01360 }catch(std::exception& e){ 01361 Error *err=new Error(4, e.what(), this); 01362 err->LanzarDialogo(); 01363 delete err; 01364 exit(1); 01365 } 01366 imagenFondoPagina=imagenFondoPagina + this->directorioCasaUsuario +"/.openAlbum/" + this->rutaGuardado.section("/", -1) + separador + "fondo" + separador + "pagina" + separador + QString::number(i) + ".JPG"; 01367 redFondoPagina="0"; 01368 greenFondoPagina="0"; 01369 blueFondoPagina="0"; 01370 try{ 01371 if(!pixFondoPag->save(imagenFondoPagina)){ 01372 //excepción 01373 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01374 } 01375 }catch(std::exception& e){ 01376 Error *err=new Error(5, e.what(), this); 01377 err->LanzarDialogo(); 01378 delete err; 01379 exit(1); 01380 } 01381 delete pixFondoPag; 01382 } 01383 01384 if(i==0){ 01385 if(this->a->GetPagina(i)->GetPaginaEditada()){ 01386 editada="si"; 01387 }else{ 01388 editada="no"; 01389 } 01390 if(this->a->GetPagina(i)->ContieneMarcos()){ 01391 texto2= " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"si\">\n"; 01392 }else{ 01393 texto2= " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"no\">\n"; 01394 } 01395 texto3=" <fotos>\n"; 01396 int contadNumFoto=0; 01397 for(unsigned j=0; j< this->a->GetPagina(i)->GetVectorImagenes().size(); j++){ 01398 01399 QPixmap *pix; 01400 try{ 01401 pix= new QPixmap(this->a->GetPagina(i)->GetVectorImagenes().at(j).ruta); 01402 }catch(std::exception& e){ 01403 Error *err=new Error(2, e.what(), this); 01404 err->LanzarDialogo(); 01405 delete err; 01406 exit(1); 01407 } 01408 QString nombreSerie= this->directorioCasaUsuario + "/.openAlbum/"; 01409 QString separador= "_"; 01410 QString pagina, foto; 01411 pagina.setNum(contadNumPagina); 01412 foto.setNum(contadNumFoto); 01413 nombreSerie= nombreSerie + this->rutaGuardado.section("/", -1) + foto + separador + pagina +".JPG"; 01414 01415 01416 try{ 01417 if(!pix->save(nombreSerie)){ 01418 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01419 } 01420 }catch(std::exception& e){ 01421 Error *err=new Error(5, e.what(), this); 01422 err->LanzarDialogo(); 01423 delete err; 01424 exit(1); 01425 } 01426 delete pix; 01427 texto3=texto3 + " <foto ruta=\"" + nombreSerie + "\"/>\n"; 01428 contadNumFoto++; 01429 } 01430 01431 if(this->a->GetPagina(i)->ContieneTextos()){ 01432 texto5=" <textos>\n"; 01433 for(unsigned t=0; t<this->a->GetPagina(i)->GetVectorTextos().size(); t++){ 01434 QString subrayado, negrita, cursiva, texto; 01435 try{ 01436 texto = this->a->GetPagina(i)->GetVectorTextos().at(t).texto; 01437 01438 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("&")){ 01439 int index=0; 01440 while(texto.contains("&")){ 01441 index = texto.indexOf("&", 0); 01442 texto.replace(index,1, "#amp"); 01443 } 01444 } 01445 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("\"")){ 01446 int index=0; 01447 while(texto.contains("\"")){ 01448 index = texto.indexOf("\"", 0); 01449 texto.replace(index,1, "#quot"); 01450 } 01451 } 01452 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("<")){ 01453 int index=0; 01454 while(texto.contains("<")){ 01455 index = texto.indexOf("<", 0); 01456 texto.replace(index,1, "#lt"); 01457 } 01458 } 01459 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains(">")){ 01460 int index=0; 01461 while(texto.contains(">")){ 01462 index = texto.indexOf(">", 0); 01463 texto.replace(index,1, "#gt"); 01464 } 01465 } 01466 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("'")){ 01467 int index=0; 01468 while(texto.contains("'")){ 01469 index = texto.indexOf("'", 0); 01470 texto.replace(index,1, "#apos"); 01471 } 01472 } 01473 01474 if(this->a->GetPagina(i)->GetVectorTextos().at(t).cursiva){ 01475 cursiva="si"; 01476 }else{ 01477 cursiva="no"; 01478 } 01479 01480 if(this->a->GetPagina(i)->GetVectorTextos().at(t).negrita){ 01481 negrita="si"; 01482 }else{ 01483 negrita="no"; 01484 } 01485 01486 if(this->a->GetPagina(i)->GetVectorTextos().at(t).subrayado){ 01487 subrayado="si"; 01488 }else{ 01489 subrayado="no"; 01490 } 01491 texto5= texto5 + " <texto contenido=\"" + texto + "\" fuente=\"" + this->a->GetPagina(i)->GetVectorTextos().at(t).fuente.toString() + "\" negrita=\"" + negrita + "\" subrayado=\"" + subrayado + "\" cursiva=\"" + cursiva + "\" red=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.red()) + "\" green=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.green()) + "\" blue=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.blue()) + "\"/>\n"; 01492 }catch(std::exception& e){ 01493 Error *err=new Error(1, e.what(), this); 01494 err->LanzarDialogo(); 01495 delete err; 01496 exit(1); 01497 } 01498 } 01499 texto5=texto5 + " </textos>\n"; 01500 } 01501 01502 01503 QString textoM=""; 01504 for(int contadormarcos=0; contadormarcos<this->a->GetPagina(i)->getMarcos().size(); contadormarcos++){ 01505 QString texto= " <marco id=\""+ QString::number(this->a->GetPagina(i)->getMarcos().at(contadormarcos).idFoto) + "\" nombre=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).nombre->toStdString().c_str() + "\" tipo=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).tipo->toStdString().c_str() + "\"/>\n"; 01506 textoM.append(texto); 01507 } 01508 if(this->a->GetPagina(i)->ContieneTextos()){ 01509 if(this->a->GetPagina(i)->ContieneMarcos()){ 01510 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + " <marcos>\n" + textoM + " </marcos>\n" + texto5; 01511 }else{ 01512 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + texto5; 01513 01514 } 01515 }else{ 01516 if(this->a->GetPagina(i)->ContieneMarcos()){ 01517 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + " <marcos>\n" + textoM + " </marcos>\n"; 01518 }else{ 01519 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n"; 01520 01521 } 01522 } 01523 01524 texto2= texto2 + " </pagina>\n"; 01525 01526 }else{ 01527 if(this->a->GetPagina(i)->GetPaginaEditada()){ 01528 editada="si"; 01529 }else{ 01530 editada="no"; 01531 } 01532 if(this->a->GetPagina(i)->ContieneMarcos()){ 01533 texto2= texto2 + " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"si\">\n"; 01534 }else{ 01535 texto2= texto2 + " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"no\">\n"; 01536 } 01537 texto4=" <fotos>\n"; 01538 int contadNumFoto2=0; 01539 for(unsigned y=0; y< this->a->GetPagina(i)->GetVectorImagenes().size(); y++){ 01540 01541 QPixmap *pix; 01542 try{ 01543 pix= new QPixmap(this->a->GetPagina(i)->GetVectorImagenes().at(y).ruta); 01544 if(pix->isNull()){ 01545 throw std::ios_base::failure(tr("No pudo abrirse una de las imagenes.").toStdString()); 01546 } 01547 }catch(std::exception& e){ 01548 Error *err=new Error(4, e.what(), this); 01549 err->LanzarDialogo(); 01550 delete err; 01551 exit(1); 01552 } 01553 01554 QString nombreSerie= this->directorioCasaUsuario + "/.openAlbum/"; 01555 QString separador= "_"; 01556 QString pagina, foto; 01557 pagina.setNum(contadNumPagina); 01558 foto.setNum(contadNumFoto2); 01559 nombreSerie= nombreSerie + this->rutaGuardado.section("/", -1) + foto + separador + pagina +".JPG"; 01560 01561 try{ 01562 if(!pix->save(nombreSerie)){ 01563 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 01564 } 01565 }catch(std::exception& e){ 01566 Error *err=new Error(5, e.what(), this); 01567 err->LanzarDialogo(); 01568 delete err; 01569 exit(1); 01570 } 01571 delete pix; 01572 texto4=texto4 + " <foto ruta=\"" + nombreSerie + "\"/>\n"; 01573 contadNumFoto2++; 01574 } 01575 01576 if(this->a->GetPagina(i)->ContieneTextos()){ 01577 texto6=" <textos>\n"; 01578 for(unsigned t=0; t<this->a->GetPagina(i)->GetVectorTextos().size(); t++){ 01579 QString subrayado, negrita, cursiva, texto; 01580 01581 try{ 01582 texto = this->a->GetPagina(i)->GetVectorTextos().at(t).texto; 01583 01584 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("&")){ 01585 int index=0; 01586 while(texto.contains("&")){ 01587 index = texto.indexOf("&", 0); 01588 texto.replace(index,1, "#amp"); 01589 } 01590 } 01591 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("\"")){ 01592 int index=0; 01593 while(texto.contains("\"")){ 01594 index = texto.indexOf("\"", 0); 01595 texto.replace(index,1, "#quot"); 01596 } 01597 } 01598 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("<")){ 01599 int index=0; 01600 while(texto.contains("<")){ 01601 index = texto.indexOf("<", 0); 01602 texto.replace(index,1, "#lt"); 01603 } 01604 } 01605 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains(">")){ 01606 int index=0; 01607 while(texto.contains(">")){ 01608 index = texto.indexOf(">", 0); 01609 texto.replace(index,1, "#gt"); 01610 } 01611 } 01612 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("'")){ 01613 int index=0; 01614 while(texto.contains("'")){ 01615 index = texto.indexOf("'", 0); 01616 texto.replace(index,1, "#apos"); 01617 } 01618 } 01619 if(this->a->GetPagina(i)->GetVectorTextos().at(t).cursiva){ 01620 cursiva="si"; 01621 }else{ 01622 cursiva="no"; 01623 } 01624 01625 if(this->a->GetPagina(i)->GetVectorTextos().at(t).negrita){ 01626 negrita="si"; 01627 }else{ 01628 negrita="no"; 01629 } 01630 01631 if(this->a->GetPagina(i)->GetVectorTextos().at(t).subrayado){ 01632 subrayado="si"; 01633 }else{ 01634 subrayado="no"; 01635 } 01636 texto6= texto6 + " <texto contenido=\"" + texto + "\" fuente=\"" + this->a->GetPagina(i)->GetVectorTextos().at(t).fuente.toString() + "\" negrita=\"" + negrita + "\" subrayado=\"" + subrayado + "\" cursiva=\"" + cursiva + "\" red=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.red()) + "\" green=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.green()) + "\" blue=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.blue()) + "\"/>\n"; 01637 }catch(std::exception& e){ 01638 Error *err=new Error(1, e.what(), this); 01639 err->LanzarDialogo(); 01640 delete err; 01641 exit(1); 01642 } 01643 } 01644 texto6=texto6 + " </textos>\n"; 01645 } 01646 QString textoM2=""; 01647 for(int contadormarcos=0; contadormarcos<this->a->GetPagina(i)->getMarcos().size(); contadormarcos++){ 01648 QString texto=" <marco id=\""+ QString::number(this->a->GetPagina(i)->getMarcos().at(contadormarcos).idFoto) + "\" nombre=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).nombre->toStdString().c_str() + "\" tipo=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).tipo->toStdString().c_str() + "\"/>\n"; 01649 textoM2.append(texto); 01650 } 01651 if(this->a->GetPagina(i)->ContieneTextos()){ 01652 if(this->a->GetPagina(i)->ContieneMarcos()){ 01653 texto2=texto2 + texto4 + " </fotos>\n" + " <marcos>\n" + textoM2 + " </marcos>\n" + texto6; 01654 }else{ 01655 texto2=texto2 + texto4 + " </fotos>\n" + texto6; 01656 } 01657 }else{ 01658 if(this->a->GetPagina(i)->ContieneMarcos()){ 01659 texto2=texto2 + texto4 + " </fotos>\n" + " <marcos>\n" + textoM2 + " </marcos>\n"; 01660 }else{ 01661 texto2=texto2 + texto4 + " </fotos>\n"; 01662 } 01663 } 01664 01665 01666 texto2=texto2 + " </pagina>\n"; 01667 01668 01669 } 01670 contadNumPagina++; 01671 ii=i; 01672 } 01673 01674 } 01675 01676 for(int x=0; x<this->paginasDesplazadas.size(); x++){ 01677 try{ 01678 texto9=texto9 + this->paginasDesplazadas.at(x); 01679 }catch(std::exception& e){ 01680 Error *err=new Error(1, e.what(), this); 01681 err->LanzarDialogo(); 01682 delete err; 01683 exit(1); 01684 } 01685 } 01686 01687 if(this->creadasPaginas){ 01688 texto2= texto2 + " </paginas>\n" + " <DesplazamientosPaginas>\n" + texto9 + " </DesplazamientosPaginas>\n"; 01689 01690 textoFinal= texto + texto2; 01691 }else{ 01692 texto2= texto2 + " <Desplazamientos>\n" + texto9 + " </Desplazamientos>\n"; 01693 01694 textoFinal= texto + texto2; 01695 } 01696 textoFinal= textoFinal + "</album>\n"; 01697 textStream << textoFinal; 01698 file.close(); 01699 01700 this->paginasDesplazadas.clear(); 01701 this->portadaDesplazada.clear(); 01702 01703 QString lineaConfig="<album nombre=\""; 01704 lineaConfig.append(this->rutaGuardado); 01705 lineaConfig.append("\"/>\n</creados_recientemente></general>"); 01706 QString directorio=this->directorioCasaUsuario; 01707 directorio.append("/.openAlbum/configuracion.xml"); 01708 QFile filename(directorio); 01709 if (filename.open(QIODevice::ReadOnly | QIODevice::Text)) 01710 { 01711 QFile filename2(directorio); 01712 if (filename2.open(QIODevice::ReadWrite)) 01713 { 01714 QTextStream in(&filename); 01715 QTextStream out(&filename2); 01716 bool aux=false; 01717 while(!aux) { 01718 QString linea=in.readLine(); 01719 if(linea=="</creados_recientemente></general>"){ 01720 aux=true; 01721 }else{ 01722 out << linea.append("\n"); 01723 } 01724 } 01725 out << lineaConfig; 01726 filename2.close(); 01727 } 01728 filename.close(); 01729 } 01730 01731 01732 barra->setValue(9+ii); 01733 } 01734 this->ui->statusBar->setMaximumWidth(wAux); 01735 delete barra; 01736 } 01737 01738 bool FormPrincipal::getCreadoconAsistente(){ 01739 return this->creadoConAsistente; 01740 } 01741 01742 bool FormPrincipal::seleccionadoFondoPortada(){ 01743 return this->elegidoFondoPortada; 01744 } 01745 01746 bool FormPrincipal::seleccionadoFrontalPortada(){ 01747 return this->elegidaFrontalPortada; 01748 } 01749 01750 bool FormPrincipal::seleccionadoTraseraPortada(){ 01751 return this->elegidaTraseraPortada; 01752 } 01753 01754 void FormPrincipal::Cargar0(){ 01755 this->Cargar(this->nombresAlbumsCreadosRecientemente[0]); 01756 } 01757 01758 void FormPrincipal::Cargar1(){ 01759 this->Cargar(this->nombresAlbumsCreadosRecientemente[1]); 01760 } 01761 void FormPrincipal::Cargar2(){ 01762 this->Cargar(this->nombresAlbumsCreadosRecientemente[2]); 01763 } 01764 01765 void FormPrincipal::Cargar3(){ 01766 this->Cargar(this->nombresAlbumsCreadosRecientemente[3]); 01767 } 01768 01769 void FormPrincipal::Cargar4(){ 01770 this->Cargar(this->nombresAlbumsCreadosRecientemente[4]); 01771 } 01772 01773 void FormPrincipal::Cargar5(){ 01774 this->Cargar(this->nombresAlbumsCreadosRecientemente[5]); 01775 } 01776 void FormPrincipal::Cargar6(){ 01777 this->Cargar(this->nombresAlbumsCreadosRecientemente[6]); 01778 } 01779 01780 void FormPrincipal::MostrarLineasPaginas(){ 01781 if(this->creadasPaginas){ 01782 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 01783 for(unsigned contador=0; contador< a->paginas.size(); contador++){ 01784 a->paginas[contador]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 01785 } 01786 }else{ 01787 for(unsigned contador=0; contador< a->paginas.size(); contador++){ 01788 a->paginas[contador]->versionReducida->scene()->removeItem(a->paginas[contador]->versionReducida->scene()->itemAt(231*(this->controlador->getWVisorAlbum())/462, 2)); 01789 } 01790 } 01791 } 01792 } 01793 01794 void FormPrincipal::LanzarCreditos(){ 01795 creditos *formcreditos=new creditos(this, this->controlador, this->directoriodetrabajo); 01796 formcreditos->exec(); 01797 delete formcreditos; 01798 } 01799 01800 void FormPrincipal::MostrarLicencia(){ 01801 QDesktopServices::openUrl(QUrl("file://" + this->directoriodetrabajo.absolutePath() + "/license/copying.txt")); 01802 } 01803 01804 void FormPrincipal::EnviarEmail(){ 01805 01806 QDesktopServices::openUrl(QUrl("mailto:manuel.brihuega@gmail.com")); 01807 } 01808 01809 void FormPrincipal::MostrarAyuda(){ 01810 01811 QDesktopServices::openUrl(QUrl("file://" + this->directoriodetrabajo.absolutePath() + "/FAQ/index.htm")); 01812 } 01813 01814 void FormPrincipal::MostrarLineasPortada(){ 01815 if(this->creadaPortada){ 01816 if(this->ui->actionLineaSeparacionPortada->isChecked()){ 01817 a->portada->versionReducida->scene()->addLine(213*(this->controlador->getWVisorAlbum())/462, 2, 213*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 01818 a->portada->versionReducida->scene()->addLine(245*(this->controlador->getWVisorAlbum())/462, 2, 245*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 01819 }else{ 01820 a->portada->versionReducida->scene()->removeItem(a->portada->versionReducida->scene()->itemAt(213*(this->controlador->getWVisorAlbum())/462, 2)); 01821 a->portada->versionReducida->scene()->removeItem(a->portada->versionReducida->scene()->itemAt(245*(this->controlador->getWVisorAlbum())/462, 2)); 01822 a->portada->versionReducida->scene()->addLine(this->controlador->getWVisorAlbum(), 2, this->controlador->getWVisorAlbum(), this->controlador->getHVisorAlbum())->setAcceptHoverEvents(false); 01823 a->portada->versionReducida->scene()->addLine(this->controlador->getWVisorAlbum(), 2, this->controlador->getWVisorAlbum(), this->controlador->getHVisorAlbum())->setAcceptHoverEvents(false); 01824 01825 } 01826 } 01827 } 01828 01829 void FormPrincipal::LanzarWizard(bool visible){ 01830 01831 this->wizard=new QWizard(this); 01832 QFile existencia; 01833 QDir dir; 01834 bool activarWizard=false; 01835 01836 if(existencia.exists(dir.homePath() + "/.openAlbum/configuracion.xml")){ 01837 01838 Parser par(dir.homePath().toStdString() + "/.openAlbum/configuracion.xml",0); 01839 01840 ticpp::Element* element = par.root(); 01841 ticpp::Element* elementAlbum; 01842 std::vector<ticpp::Element*> albums; 01843 std::string aux=par.get_attribute("wizard", element); 01844 elementAlbum=par.find("creados_recientemente", element); 01845 par.find("album", albums, elementAlbum); 01846 01847 if(aux=="si"){ 01848 activarWizard=true; 01849 }else{ 01850 01851 activarWizard=false; 01852 } 01853 01854 //Ahora añadimos los últimos álbumes generados en el menu de Archivo 01855 //De esto solo queda ordenar inversamente 01856 unsigned iniciobucle=0; 01857 if(albums.size()>7){ 01858 iniciobucle=albums.size()-7; 01859 } 01860 unsigned contadorauxiliar=0; 01861 QSet<QString> controlrepetidos; 01862 for(unsigned x=iniciobucle; x<albums.size(); x++){ 01863 if(x<(7+iniciobucle)){ 01864 std::string nombre=par.get_attribute("nombre", albums.at(x)); 01865 nombresAlbumsCreadosRecientemente.insert(contadorauxiliar, QString::fromStdString(nombre)); 01866 controlrepetidos.insert(QString::fromStdString(nombre)); 01867 contadorauxiliar++; 01868 } 01869 } 01870 01871 QStack<QString> pila; 01872 for(int z=0; z < nombresAlbumsCreadosRecientemente.size(); z++){ 01873 if(controlrepetidos.contains(nombresAlbumsCreadosRecientemente[z])){ 01874 pila.push(nombresAlbumsCreadosRecientemente[z]); 01875 controlrepetidos.remove(nombresAlbumsCreadosRecientemente[z]); 01876 } 01877 } 01878 unsigned contadorAux=0; 01879 nombresAlbumsCreadosRecientemente.clear(); 01880 while(!pila.isEmpty()){ 01881 nombresAlbumsCreadosRecientemente.insert(contadorAux, pila.top()); 01882 pila.pop(); 01883 contadorAux++; 01884 } 01885 01886 if(!this->insertadoActionSalir){ 01887 for(int y=0; y < nombresAlbumsCreadosRecientemente.size(); y++){ 01888 QString nombreDefinitivo="&"; 01889 nombreDefinitivo.append(QString::number(y+1)); 01890 nombreDefinitivo.append(". "); 01891 nombreDefinitivo.append(nombresAlbumsCreadosRecientemente[y].section("/", -1)); 01892 01893 QAction *a=this->ui->menu_Archivo->addAction(nombreDefinitivo); 01894 QIcon *icono=new QIcon(this->directoriodetrabajo.absolutePath() + "/data/albumgeneral.png"); 01895 a->setIcon(*icono); 01896 a->setIconVisibleInMenu(true); 01897 if(y==0){ 01898 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar0())); 01899 } 01900 if(y==1){ 01901 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar1())); 01902 } 01903 if(y==2){ 01904 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar2())); 01905 } 01906 if(y==3){ 01907 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar3())); 01908 } 01909 if(y==4){ 01910 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar4())); 01911 } 01912 if(y==5){ 01913 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar5())); 01914 } 01915 if(y==6){ 01916 QObject::connect(a, SIGNAL(triggered() ), this, SLOT(Cargar6())); 01917 } 01918 01919 delete icono; 01920 } 01921 this->ui->menu_Archivo->addSeparator(); 01922 this->ui->menu_Archivo->addAction(this->ui->action_Salir); 01923 this->insertadoActionSalir=true; 01924 } 01925 01926 }else{ 01927 activarWizard=true; 01928 } 01929 if(!this->insertadoActionSalir){ 01930 this->ui->menu_Archivo->addSeparator(); 01931 this->ui->menu_Archivo->addAction(this->ui->action_Salir); 01932 this->insertadoActionSalir=true; 01933 } 01934 01935 this->wizard->setWizardStyle(QWizard::ModernStyle); 01936 01937 this->wizard->setWindowTitle(tr("Asistente de creación")); 01938 01939 01940 QList<QWizard::WizardButton> layout; 01941 layout << QWizard::Stretch << QWizard::BackButton << QWizard::NextButton << QWizard::FinishButton << QWizard::CancelButton; 01942 this->wizard->setButtonLayout(layout); 01943 this->wizard->setButtonText(QWizard::NextButton, tr("&Siguiente >")); 01944 this->wizard->setButtonText(QWizard::BackButton, tr("< &Atrás")); 01945 this->wizard->setButtonText(QWizard::CancelButton, tr("&Cancelar")); 01946 this->wizard->setButtonText(QWizard::FinishButton, tr("&Finalizar")); 01947 this->wizard->addPage(this->crearPaginaIntro()); 01948 this->wizard->setFixedSize(510, 390); 01949 this->wizard->setOption(QWizard::DisabledBackButtonOnLastPage); 01950 01951 01952 this->wizard->addPage(this->crearPaginaPortada()); 01953 01954 this->wizard->addPage(this->crearPaginaFondoPortada()); 01955 this->wizard->addPage(this->crearPaginaTamanno()); 01956 01957 this->wizard->addPage(this->crearPaginaFotos()); 01958 01959 this->wizard->addPage(this->crearPaginaFinal()); 01960 01961 01962 if(activarWizard){ 01963 01964 QString pathAuxiliar=this->directoriodetrabajo.absolutePath() + "/data/templatePredef.png"; 01965 QPixmap *pix=new QPixmap(pathAuxiliar); 01966 QGraphicsScene *scena=new QGraphicsScene(); 01967 01968 this->ui->plantillaPreview->setScene(scena); 01969 scena->addPixmap(pix->scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 01970 delete pix; 01971 this->wizard->exec(); 01972 this->ejecutadoWizard=true; 01973 if(this->wizard->result()==QDialog::Rejected){ 01974 this->intro->setConfiguracion(); 01975 this->NuevoAlbum(false); 01976 01977 } 01978 }else{ 01979 01980 if(visible){ 01981 01982 QString pathAuxiliar=this->directoriodetrabajo.absolutePath() + "/data/templatePredef.png"; 01983 QPixmap *pix=new QPixmap(pathAuxiliar); 01984 QGraphicsScene *scena=new QGraphicsScene(); 01985 01986 this->ui->plantillaPreview->setScene(scena); 01987 scena->addPixmap(pix->scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 01988 delete pix; 01989 this->wizard->exec(); 01990 this->ejecutadoWizard=true; 01991 if(this->wizard->result()==QDialog::Rejected){ 01992 this->intro->setConfiguracion(); 01993 this->NuevoAlbum(false); 01994 01995 } 01996 }else{ 01997 01998 QString pathAuxiliar=this->directoriodetrabajo.absolutePath() + "/data/templatePredef.png"; 01999 QPixmap *pix=new QPixmap(pathAuxiliar); 02000 QGraphicsScene *scena=new QGraphicsScene(); 02001 02002 this->ui->plantillaPreview->setScene(scena); 02003 scena->addPixmap(pix->scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02004 delete pix; 02005 } 02006 } 02007 02008 02009 02010 02011 02012 02013 } 02014 02015 bool FormPrincipal::getUsadasTexturas(){ 02016 return this->seleccionadaTextura; 02017 } 02018 02019 02020 02021 void FormPrincipal::Cargar(QString AbrirDialogo){ 02022 QProgressDialog *barra= new QProgressDialog(this); 02023 barra->setWindowTitle(tr("Cargando álbum...")); 02024 barra->setFixedSize(361, 90); 02025 02026 barra->setMinimum(0); 02027 barra->setStyle(new QWindowsStyle); 02028 02029 QString fileName; 02030 if(AbrirDialogo=="si"){ 02031 QFileDialog::Options options; 02032 QString selectedFilter="OPA: Open Album File (*.opa)"; 02033 fileName= QFileDialog::getOpenFileName(this, tr("Abrir album"), this->directorioCasaUsuario, tr("OPA: Open Album File (*.opa)"), &selectedFilter, options); 02034 }else{ 02035 fileName=AbrirDialogo; 02036 } 02037 02038 if(!fileName.isNull()){ 02039 this->activadaCarga=true; 02040 Parser parser(fileName.toStdString(), this); 02041 this->ActivadoGuardado=true; 02042 this->rutaGuardado=fileName; 02043 ticpp::Element* element = parser.root(); 02044 ticpp::Element* portadaElement = parser.find("portada", element); 02045 ticpp::Element* desplazamientosPaginasElement = parser.find("DesplazamientosPaginas", element); 02046 std::string sionotrasera = parser.get_attribute("img_tras", element); 02047 std::string sionofrontal = parser.get_attribute("img_fron", element); 02048 std::string sionoTlateral = parser.get_attribute("texto_lat", element); 02049 std::string sionoTfrontal = parser.get_attribute("texto_fron", element); 02050 std::string sionoTtrasero = parser.get_attribute("texto_tras", element); 02051 static ticpp::Element* imagenTraseraPortadaElement; 02052 static ticpp::Element* imagenFrontalPortadaElement; 02053 static ticpp::Element* textoLateralPortadaElement; 02054 static ticpp::Element* textoFrontalPortadaElement; 02055 static ticpp::Element* textoTraseroPortadaElement; 02056 if(sionotrasera=="no"){ 02057 this->a->portada->DesactivarImagenTrasera(); 02058 }else{ 02059 imagenTraseraPortadaElement = parser.find("imagen_tra", portadaElement); 02060 this->a->portada->ActivarImagenTrasera(); 02061 } 02062 if(sionofrontal=="no"){ 02063 this->a->portada->DesactivarImagenFrontal(); 02064 }else{ 02065 imagenFrontalPortadaElement = parser.find("imagen_fro", portadaElement); 02066 this->a->portada->ActivarImagenFrontal(); 02067 } 02068 if(sionoTlateral=="no"){ 02069 this->a->portada->DesactivarTextoLateral(); 02070 }else{ 02071 textoLateralPortadaElement = parser.find("texto_lat", portadaElement); 02072 this->a->portada->ActivarTextoLateral(); 02073 } 02074 if(sionoTfrontal=="no"){ 02075 this->a->portada->DesactivarTextoFrontal(); 02076 }else{ 02077 textoFrontalPortadaElement = parser.find("texto_fro", portadaElement); 02078 this->a->portada->ActivarTextoFrontal(); 02079 } 02080 if(sionoTtrasero=="no"){ 02081 this->a->portada->DesactivarTextoTrasero(); 02082 }else{ 02083 textoTraseroPortadaElement = parser.find("texto_tra", portadaElement); 02084 this->a->portada->ActivarTextoTrasero(); 02085 } 02086 ticpp::Element* paginasElement = parser.find("paginas", element); 02087 std::string hayPaginasString = parser.get_attribute("paginas", element); 02088 std::vector<ticpp::Element*> DesplazamientosPaginas; 02089 02090 std::vector<ticpp::Element*> DesplazamientosPortada; 02091 std::vector<ticpp::Element*> vectorPaginas; 02092 parser.find("pagina", vectorPaginas, paginasElement); 02093 02094 bool hayDesplPaginas = parser.find("Desplazamientos", DesplazamientosPaginas, desplazamientosPaginasElement); 02095 02096 bool hayDesplPortada = parser.find("DesplazamientoPortada", DesplazamientosPortada, parser.find("Desplazamientos", portadaElement)); 02097 02098 bool hayPaginas; 02099 02100 02101 02102 02103 this->NuevoAlbum(); 02104 02105 if(hayPaginasString=="si"){ 02106 hayPaginas=true; 02107 barra->setMaximum(8+vectorPaginas.size()); 02108 this->creadasPaginas=true; 02109 02110 }else{ 02111 hayPaginas=false; 02112 02113 this->creadasPaginas=false; 02114 } 02115 02116 //Primero comenzamos con la portada 02117 02118 02119 02120 this->ActivadoGuardado=true; 02121 this->rutaGuardado=fileName; 02122 02123 this->ActivarSeleccionPlantilla(); 02124 02125 QString plantillaPortadaQ= (parser.get_attribute("plantilla", portadaElement)).c_str(); 02126 02127 02128 for (int i = ui->selectorPlantilla->topLevelItemCount() - 1; i >= 0; i--){ 02129 02130 02131 QString plantillaAuxiliar=this->directoriodetrabajo.absolutePath() + "/templates/" + (ui->selectorPlantilla->topLevelItem(i))->text(0)+".xml"; 02132 02133 if(ui->selectorPlantilla->topLevelItem(i)->isSelected()){ 02134 ui->selectorPlantilla->topLevelItem(i)->setSelected(false); 02135 } 02136 if(plantillaAuxiliar==plantillaPortadaQ){ 02137 ui->selectorPlantilla->topLevelItem(i)->setSelected(true); 02138 02139 } 02140 } 02141 02142 02143 this->visualizarPlantilla(); 02144 02145 if(this->a->portada->hayImagenFrontal()){ 02146 QString rutaFotoFrontalPortadaQ= (parser.get_attribute("ruta", imagenFrontalPortadaElement)).c_str(); 02147 this->a->portada->LoadFotoFrontalRuta(rutaFotoFrontalPortadaQ); 02148 this->elegidaFrontalPortada=true; 02149 } 02150 02151 if(this->a->portada->hayImagenTrasera()){ 02152 QString rutaFotoTraseraPortadaQ= (parser.get_attribute("ruta", imagenTraseraPortadaElement)).c_str(); 02153 this->a->portada->LoadFotoTraseraRuta(rutaFotoTraseraPortadaQ); 02154 this->elegidaTraseraPortada=true; 02155 } 02156 02157 if(this->a->portada->hayTextoFrontal()){ 02158 02159 QString textoFrontalPortada= QString::fromUtf8((parser.get_attribute("texto", textoFrontalPortadaElement)).c_str()); 02160 02161 if(textoFrontalPortada.contains("#amp")){ 02162 int index=0; 02163 QString codificacion= "#amp"; 02164 while(textoFrontalPortada.contains(codificacion)){ 02165 index=textoFrontalPortada.indexOf(codificacion, 0); 02166 textoFrontalPortada.replace(index,codificacion.size(),"&"); 02167 } 02168 } 02169 02170 if(textoFrontalPortada.contains("#quot")){ 02171 int index=0; 02172 QString codificacion= "#quot"; 02173 while(textoFrontalPortada.contains(codificacion)){ 02174 index=textoFrontalPortada.indexOf(codificacion, 0); 02175 textoFrontalPortada.replace(index,codificacion.size(),"\""); 02176 } 02177 } 02178 02179 if(textoFrontalPortada.contains("#apos")){ 02180 int index=0; 02181 QString codificacion= "#apos"; 02182 while(textoFrontalPortada.contains(codificacion)){ 02183 index=textoFrontalPortada.indexOf(codificacion, 0); 02184 textoFrontalPortada.replace(index,codificacion.size(),"'"); 02185 } 02186 } 02187 if(textoFrontalPortada.contains("#lt")){ 02188 int index=0; 02189 QString codificacion= "#lt"; 02190 while(textoFrontalPortada.contains(codificacion)){ 02191 index=textoFrontalPortada.indexOf(codificacion, 0); 02192 textoFrontalPortada.replace(index,codificacion.size(),"<"); 02193 } 02194 } 02195 02196 if(textoFrontalPortada.contains("#gt")){ 02197 int index=0; 02198 QString codificacion= "#gt"; 02199 while(textoFrontalPortada.contains(codificacion)){ 02200 index=textoFrontalPortada.indexOf(codificacion, 0); 02201 textoFrontalPortada.replace(index,codificacion.size(),">"); 02202 } 02203 } 02204 02205 QFont fuenteFrontalPortada; 02206 QString fuenteFrontalPortadaQ=(parser.get_attribute("fuente", textoFrontalPortadaElement)).c_str(); 02207 fuenteFrontalPortada.fromString(fuenteFrontalPortadaQ); 02208 bool negritaFrontalPortada; 02209 if(parser.get_attribute("negrita", textoFrontalPortadaElement)=="si"){ 02210 negritaFrontalPortada=true; 02211 }else{ 02212 negritaFrontalPortada=false; 02213 } 02214 bool cursivaFrontalPortada; 02215 if(parser.get_attribute("cursiva", textoFrontalPortadaElement)=="si"){ 02216 cursivaFrontalPortada=true; 02217 }else{ 02218 cursivaFrontalPortada=false; 02219 } 02220 bool subrayadoFrontalPortada; 02221 if(parser.get_attribute("subrayado", textoFrontalPortadaElement)=="si"){ 02222 subrayadoFrontalPortada=true; 02223 }else{ 02224 subrayadoFrontalPortada=false; 02225 } 02226 02227 this->a->portada->LoadTextoFrontal(cursivaFrontalPortada, negritaFrontalPortada, subrayadoFrontalPortada, textoFrontalPortada, fuenteFrontalPortada); 02228 // Ahora cargamos los colores del texto 02229 int redTextoFrontalPortada, greenTextoFrontalPortada, blueTextoFrontalPortada; 02230 parser.get_attribute("red", textoFrontalPortadaElement, &redTextoFrontalPortada); 02231 parser.get_attribute("green", textoFrontalPortadaElement, &greenTextoFrontalPortada); 02232 parser.get_attribute("blue", textoFrontalPortadaElement, &blueTextoFrontalPortada); 02233 this->a->portada->LoadColorTextoFrontal(QColor(redTextoFrontalPortada, greenTextoFrontalPortada, blueTextoFrontalPortada)); 02234 02235 } 02236 02237 if(this->a->portada->hayTextoTrasero()){ 02238 QString textoTraseroPortada= QString::fromUtf8((parser.get_attribute("texto", textoTraseroPortadaElement)).c_str()); 02239 if(textoTraseroPortada.contains("#amp")){ 02240 int index=0; 02241 QString codificacion= "#amp"; 02242 while(textoTraseroPortada.contains(codificacion)){ 02243 index=textoTraseroPortada.indexOf(codificacion, 0); 02244 textoTraseroPortada.replace(index,codificacion.size(),"&"); 02245 } 02246 } 02247 02248 if(textoTraseroPortada.contains("#quot")){ 02249 int index=0; 02250 QString codificacion= "#quot"; 02251 while(textoTraseroPortada.contains(codificacion)){ 02252 index=textoTraseroPortada.indexOf(codificacion, 0); 02253 textoTraseroPortada.replace(index,codificacion.size(),"\""); 02254 } 02255 } 02256 if(textoTraseroPortada.contains("#apos")){ 02257 int index=0; 02258 QString codificacion= "#apos"; 02259 while(textoTraseroPortada.contains(codificacion)){ 02260 index=textoTraseroPortada.indexOf(codificacion, 0); 02261 textoTraseroPortada.replace(index,codificacion.size(),"'"); 02262 } 02263 } 02264 02265 if(textoTraseroPortada.contains("#lt")){ 02266 int index=0; 02267 QString codificacion= "#lt"; 02268 while(textoTraseroPortada.contains(codificacion)){ 02269 index=textoTraseroPortada.indexOf(codificacion, 0); 02270 textoTraseroPortada.replace(index,codificacion.size(),"<"); 02271 } 02272 } 02273 if(textoTraseroPortada.contains("#gt")){ 02274 int index=0; 02275 QString codificacion= "#gt"; 02276 while(textoTraseroPortada.contains(codificacion)){ 02277 index=textoTraseroPortada.indexOf(codificacion, 0); 02278 textoTraseroPortada.replace(index,codificacion.size(),">"); 02279 } 02280 } 02281 QFont fuenteTraseraPortada; 02282 QString fuenteTraseraPortadaQ=(parser.get_attribute("fuente", textoTraseroPortadaElement)).c_str(); 02283 fuenteTraseraPortada.fromString(fuenteTraseraPortadaQ); 02284 bool negritaTraseraPortada; 02285 if(parser.get_attribute("negrita", textoTraseroPortadaElement)=="si"){ 02286 negritaTraseraPortada=true; 02287 }else{ 02288 negritaTraseraPortada=false; 02289 } 02290 bool cursivaTraseraPortada; 02291 if(parser.get_attribute("cursiva", textoTraseroPortadaElement)=="si"){ 02292 cursivaTraseraPortada=true; 02293 }else{ 02294 cursivaTraseraPortada=false; 02295 } 02296 bool subrayadoTraseroPortada; 02297 if(parser.get_attribute("subrayado", textoTraseroPortadaElement)=="si"){ 02298 subrayadoTraseroPortada=true; 02299 }else{ 02300 subrayadoTraseroPortada=false; 02301 } 02302 this->a->portada->LoadTextoTrasero(cursivaTraseraPortada, negritaTraseraPortada, subrayadoTraseroPortada, textoTraseroPortada, fuenteTraseraPortada); 02303 int redTextoTraseroPortada, greenTextoTraseroPortada, blueTextoTraseroPortada; 02304 parser.get_attribute("red", textoTraseroPortadaElement, &redTextoTraseroPortada); 02305 parser.get_attribute("green", textoTraseroPortadaElement, &greenTextoTraseroPortada); 02306 parser.get_attribute("blue", textoTraseroPortadaElement, &blueTextoTraseroPortada); 02307 this->a->portada->LoadColorTextoTrasera(QColor(redTextoTraseroPortada, greenTextoTraseroPortada, blueTextoTraseroPortada)); 02308 02309 } 02310 if(this->a->portada->hayTextoLateral()){ 02311 QString textoLateralPortada= QString::fromUtf8((parser.get_attribute("texto", textoLateralPortadaElement).c_str())); 02312 if(textoLateralPortada.contains("#amp")){ 02313 int index=0; 02314 QString codificacion= "#amp"; 02315 while(textoLateralPortada.contains(codificacion)){ 02316 index=textoLateralPortada.indexOf(codificacion, 0); 02317 textoLateralPortada.replace(index,codificacion.size(),"&"); 02318 } 02319 } 02320 if(textoLateralPortada.contains("#quot")){ 02321 int index=0; 02322 QString codificacion= "#quot"; 02323 while(textoLateralPortada.contains(codificacion)){ 02324 index=textoLateralPortada.indexOf(codificacion, 0); 02325 textoLateralPortada.replace(index,codificacion.size(),"\""); 02326 } 02327 } 02328 02329 if(textoLateralPortada.contains("#apos")){ 02330 int index=0; 02331 QString codificacion= "#apos"; 02332 while(textoLateralPortada.contains(codificacion)){ 02333 index=textoLateralPortada.indexOf(codificacion, 0); 02334 textoLateralPortada.replace(index,codificacion.size(),"'"); 02335 } 02336 } 02337 if(textoLateralPortada.contains("#lt")){ 02338 int index=0; 02339 QString codificacion= "#lt"; 02340 while(textoLateralPortada.contains(codificacion)){ 02341 index=textoLateralPortada.indexOf(codificacion, 0); 02342 textoLateralPortada.replace(index,codificacion.size(),"<"); 02343 } 02344 } 02345 if(textoLateralPortada.contains("#gt")){ 02346 int index=0; 02347 QString codificacion= "#gt"; 02348 while(textoLateralPortada.contains(codificacion)){ 02349 index=textoLateralPortada.indexOf(codificacion, 0); 02350 textoLateralPortada.replace(index,codificacion.size(),">"); 02351 } 02352 } 02353 QFont fuenteLateralPortada; 02354 QString fuenteLateralPortadaQ= (parser.get_attribute("fuente", textoLateralPortadaElement)).c_str(); 02355 fuenteLateralPortada.fromString(fuenteLateralPortadaQ); 02356 bool negritaLateralPortada; 02357 if(parser.get_attribute("negrita", textoLateralPortadaElement)=="si"){ 02358 negritaLateralPortada=true; 02359 }else{ 02360 negritaLateralPortada=false; 02361 } 02362 bool cursivaLateralPortada; 02363 if(parser.get_attribute("cursiva", textoLateralPortadaElement)=="si"){ 02364 cursivaLateralPortada=true; 02365 }else{ 02366 cursivaLateralPortada=false; 02367 } 02368 bool subrayadoLateralPortada; 02369 if(parser.get_attribute("subrayado", textoLateralPortadaElement)=="si"){ 02370 subrayadoLateralPortada=true; 02371 }else{ 02372 subrayadoLateralPortada=false; 02373 } 02374 this->a->portada->LoadTextoLateral(cursivaLateralPortada, negritaLateralPortada, subrayadoLateralPortada, textoLateralPortada, fuenteLateralPortada); 02375 //Ahora el color 02376 int blueTextoLateralPortada, redTextoLateralPortada, greenTextoLateralPortada; 02377 parser.get_attribute("red", textoLateralPortadaElement, &redTextoLateralPortada); 02378 parser.get_attribute("green", textoLateralPortadaElement, &greenTextoLateralPortada); 02379 parser.get_attribute("blue", textoLateralPortadaElement, &blueTextoLateralPortada); 02380 this->a->portada->LoadColorTextoLateral(QColor(redTextoLateralPortada, greenTextoLateralPortada, blueTextoLateralPortada)); 02381 } 02382 02383 02384 QString imagenFondoPortada= (parser.get_attribute("imagen_fondo", portadaElement)).c_str(); 02385 bool avisador=false; 02386 if(imagenFondoPortada=="no"){ 02387 this->a->portada->ActivarColordefondo(); 02388 int redFondoPortada, greenFondoPortada, blueFondoPortada; 02389 parser.get_attribute("red", portadaElement, &redFondoPortada); 02390 parser.get_attribute("green", portadaElement, &greenFondoPortada); 02391 parser.get_attribute("blue", portadaElement, &blueFondoPortada); 02392 this->a->portada->LoadFondo(QColor(redFondoPortada, greenFondoPortada, blueFondoPortada)); 02393 this->elegidoFondoPortada=true; 02394 avisador=false; 02395 }else{ 02396 this->a->portada->DesactivarColordefondo(); 02397 this->a->portada->LoadFondo(imagenFondoPortada); 02398 this->elegidoFondoPortada=true; 02399 avisador=true; 02400 } 02401 02402 //ahora cargamos las dimensiones, y los aumentos que hay que añadir al guardar 02403 int wPortada, hPortada; 02404 parser.get_attribute("tam_w", portadaElement, &wPortada); 02405 parser.get_attribute("tam_h", portadaElement, &hPortada); 02406 float wPDFPortada, hPDFPortada, wAumentoPortada, hAumentoPortada; 02407 parser.get_attribute("PDF_w", portadaElement, &wPDFPortada); 02408 parser.get_attribute("PDF_h", portadaElement, &hPDFPortada); 02409 parser.get_attribute("aumento_w", portadaElement, &wAumentoPortada); 02410 parser.get_attribute("aumento_h", portadaElement, &hAumentoPortada); 02411 02412 a->portada->LoadDimensiones(hPortada, wPortada); 02413 this->dimensionHpagina=hPortada; 02414 this->dimensionWpagina=wPortada; 02415 02416 this->CargarPreview(); 02417 02418 if(parser.get_attribute("orden", element)=="alfabetica"){ 02419 this->ordenAlfabetico=true; 02420 02421 } 02422 if(parser.get_attribute("orden", element)=="fechascreciente"){ 02423 this->ordenFechaCreciente=true; 02424 } 02425 if(parser.get_attribute("orden", element)=="fechasdecreciente"){ 02426 this->ordenFechaDecreciente=true; 02427 } 02428 if(parser.get_attribute("orden", element)=="ordenpersonalizado"){ 02429 this->ordenPersonalizado=true; 02430 } 02431 this->fechaCreacion=""; 02432 this->fechaCreacion=QString::fromStdString(parser.get_attribute("fecha", element)); 02433 if(parser.get_attribute("asistente", element)=="si"){ 02434 this->creadoConAsistente=true; 02435 }else{ 02436 this->creadoConAsistente=false; 02437 } 02438 if(parser.get_attribute("textura", portadaElement)=="si"){ 02439 this->seleccionadaTextura=true; 02440 }else{ 02441 this->seleccionadaTextura=false; 02442 } 02443 02444 02445 if(hayDesplPortada){ 02446 this->DesactivarParteEdicionPortada=true; 02447 this->a->portada->ActivarEdicion(); 02448 02449 02450 try{ 02451 for(unsigned j=0; j<DesplazamientosPortada.size(); j++){ 02452 02453 static tipoCoordenadas auxiliar; 02454 int posX, posY; 02455 parser.get_attribute("posx", DesplazamientosPortada.at(j), &posX); 02456 parser.get_attribute("posy", DesplazamientosPortada.at(j), &posY); 02457 auxiliar.x=posX; 02458 auxiliar.y=posY; 02459 this->posicionesItemsPortada.insert(j, auxiliar); 02460 } 02461 }catch(std::exception& e){ 02462 Error *err=new Error(1, e.what(), this); 02463 err->LanzarDialogo(); 02464 delete err; 02465 exit(1); 02466 } 02467 int y=0; 02468 try{ 02469 for(int j=0; j<this->a->portada->getObjetosPortada().size(); j++){ 02470 if(this->a->portada->getObjetosPortada().at(j)->acceptHoverEvents()){ 02471 this->a->portada->setPosicionObjeto(j, this->posicionesItemsPortada[y].x, this->posicionesItemsPortada[y].y); 02472 ui->visorAlbum->items().at(j)->setPos(this->posicionesItemsPortada[y].x, this->posicionesItemsPortada[y].y); 02473 if(this->a->portada->getObjetosPortada().at(j)->type()==8){ 02474 this->posicionesItemsPortada[y].tipo=8; 02475 } 02476 if(this->a->portada->getObjetosPortada().at(j)->type()==7){ 02477 this->posicionesItemsPortada[y].tipo=7; 02478 } 02479 y++; 02480 } 02481 } 02482 02483 QString texto9P; 02484 texto9P=""; 02485 for(int x=0; x <this->posicionesItemsPortada.size(); x++){ 02486 texto9P= texto9P + " <DesplazamientoPortada posx=\"" + QString::number(this->posicionesItemsPortada[x].x) + "\" posy=\"" + QString::number(this->posicionesItemsPortada[x].y) + "\"/>\n"; 02487 } 02488 this->portadaDesplazada= texto9P; 02489 }catch(std::exception& e){ 02490 Error *err=new Error(1, e.what(), this); 02491 err->LanzarDialogo(); 02492 delete err; 02493 exit(1); 02494 } 02495 02496 } 02497 02498 this->creadaPortada=true; 02499 ui->actionE_xportar->setEnabled(true); 02500 ui->actionExportarJPGBoton->setEnabled(true); 02501 ui->actionExportarPDFBoton->setEnabled(true); 02502 ui->actionI_mprimir->setEnabled(true); 02503 ui->actionImprimirBoton->setEnabled(true); 02504 this->ui->plantillaPreview->setHidden(false); 02505 02506 //Ya hemos cargado la portada, ahora haremos lo mismo con las páginas 02507 QList<bool> avisadorPagina; 02508 static int ii; 02509 if(hayPaginas){ 02510 barra->show(); 02511 barra->setValue(1); 02512 for(unsigned contador=0; contador<vectorPaginas.size(); contador++){ 02513 02514 ii=contador; 02515 02516 barra->setValue(2+ii); 02517 int tamWPagina, tamHPagina; 02518 try{ 02519 parser.get_attribute("tam_w", vectorPaginas.at(contador), &tamWPagina); 02520 parser.get_attribute("tam_h", vectorPaginas.at(contador), &tamHPagina); 02521 }catch(std::exception& e){ 02522 Error *err=new Error(1, e.what(), this); 02523 err->LanzarDialogo(); 02524 delete err; 02525 exit(1); 02526 } 02527 02528 Pagina *pag; 02529 QGraphicsScene *escena; 02530 try{ 02531 pag= new Pagina(0,0,this); 02532 pag->versionReducida->setFixedSize(this->controlador->getWVisorAlbum(), (this->controlador->getHVisorAlbum())); 02533 escena= new QGraphicsScene(0, 0, this->controlador->getWVisorAlbum(), (this->controlador->getHVisorAlbum())); 02534 }catch(std::exception& e){ 02535 Error *err=new Error(2, e.what(), this); 02536 err->LanzarDialogo(); 02537 delete err; 02538 exit(1); 02539 } 02540 pag->versionReducida->setScene(escena); 02541 this->dimensionHpagina= tamHPagina; 02542 this->dimensionWpagina= tamWPagina; 02543 pag->LoadDimensiones(tamHPagina, tamWPagina); 02544 02545 barra->setValue(3+ii); 02546 QString plantillaPagina, imagenFondoPagina; 02547 try{ 02548 plantillaPagina=parser.get_attribute("plantilla", vectorPaginas.at(contador)).c_str(); 02549 imagenFondoPagina = parser.get_attribute("imagen_fondo", vectorPaginas.at(contador)).c_str(); 02550 }catch(std::exception& e){ 02551 Error *err=new Error(1, e.what(), this); 02552 err->LanzarDialogo(); 02553 delete err; 02554 exit(1); 02555 } 02556 pag->LoadRutaPlantilla(plantillaPagina); 02557 ticpp::Element *elemento; 02558 Parser parseador(plantillaPagina.toStdString(), this); 02559 elemento=parseador.root(); 02560 std::string mascara=parseador.get_attribute("mascara", elemento); 02561 if(mascara!="no"){ 02562 QString ruta=QString::fromStdString(mascara); 02563 pag->activarMascara(ruta); 02564 } 02565 if(imagenFondoPagina=="no"){ 02566 avisadorPagina.push_back(false); 02567 pag->ActivarColordefondo(); 02568 int redFondoPagina, greenFondoPagina, blueFondoPagina; 02569 try{ 02570 parser.get_attribute("red", vectorPaginas.at(contador), &redFondoPagina); 02571 parser.get_attribute("green", vectorPaginas.at(contador), &greenFondoPagina); 02572 parser.get_attribute("blue", vectorPaginas.at(contador), &blueFondoPagina); 02573 }catch(std::exception& e){ 02574 Error *err=new Error(2, e.what(), this); 02575 err->LanzarDialogo(); 02576 delete err; 02577 exit(1); 02578 } 02579 pag->LoadFondoColor(QColor(redFondoPagina, greenFondoPagina, blueFondoPagina)); 02580 if(!pag->activadaMascara()){ 02581 QBrush *wall= new QBrush(QColor(redFondoPagina, greenFondoPagina, blueFondoPagina)); 02582 02583 pag->versionReducida->scene()->setBackgroundBrush(*wall); 02584 delete wall; 02585 } 02586 02587 }else{ 02588 02589 avisadorPagina.push_back(true); 02590 pag->DesactivarColordefondo(); 02591 pag->LoadFondo(imagenFondoPagina); 02592 if(!pag->activadaMascara()){ 02593 QPixmap *g; 02594 try{ 02595 g=new QPixmap(imagenFondoPagina); 02596 if(g->isNull()){ 02597 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de una de las paginas.").toStdString()); 02598 } 02599 }catch(std::exception& e){ 02600 Error *err=new Error(4, e.what(), this); 02601 err->LanzarDialogo(); 02602 delete err; 02603 exit(1); 02604 } 02605 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02606 delete g; 02607 item->setPos(0, 0); 02608 item->setAcceptHoverEvents(false); 02609 pag->versionReducida->scene()->addItem(item); 02610 } 02611 } 02612 barra->setValue(4+ii); 02613 QString editadaPagina= parser.get_attribute("editada", vectorPaginas.at(contador)).c_str(); 02614 Parser parserDos(plantillaPagina.toStdString(), this); 02615 ticpp::Element* elementDos = parserDos.root(); 02616 int textoPagina; 02617 02618 02619 02620 02621 std::vector<ticpp::Element*> vectorFotosPagina; 02622 std::vector<ticpp::Element*> vectorMarcosPagina; 02623 ticpp::Element *fotosPaginaElement; 02624 ticpp::Element *marcosPaginaElement; 02625 bool hayMarcos=false; 02626 try{ 02627 fotosPaginaElement= parser.find("fotos", vectorPaginas.at(contador)); 02628 02629 parser.find("foto", vectorFotosPagina, fotosPaginaElement); 02630 02631 if(parser.get_attribute("marcos", vectorPaginas.at(contador))=="si"){ 02632 marcosPaginaElement=parser.find("marcos", vectorPaginas.at(contador)); 02633 parser.find("marco", vectorMarcosPagina, marcosPaginaElement); 02634 hayMarcos=true; 02635 02636 02637 }else{ 02638 hayMarcos=false; 02639 } 02640 02641 02642 }catch(std::exception& e){ 02643 Error *err=new Error(1, e.what(), this); 02644 err->LanzarDialogo(); 02645 delete err; 02646 exit(1); 02647 } 02648 for(unsigned contadorFotos=0; contadorFotos < vectorFotosPagina.size(); contadorFotos++){ 02649 QString rutaFotoPagina; 02650 int wFotoPagina, hFotoPagina, xFotoPagina, yFotoPagina; 02651 try{ 02652 rutaFotoPagina= QString::fromAscii(parser.get_attribute("ruta", vectorFotosPagina.at(contadorFotos)).c_str()); 02653 std::vector<ticpp::Element*> areasImagenPagina; 02654 std::string pos; 02655 parserDos.find("area_imagen", areasImagenPagina, parserDos.find("areas_imagen", elementDos)); 02656 parserDos.get_attribute("w", areasImagenPagina.at(contadorFotos), &wFotoPagina); 02657 parserDos.get_attribute("h", areasImagenPagina.at(contadorFotos), &hFotoPagina); 02658 parserDos.get_attribute("pos_x", areasImagenPagina.at(contadorFotos), &xFotoPagina); 02659 parserDos.get_attribute("pos_y", areasImagenPagina.at(contadorFotos), &yFotoPagina); 02660 pos=parserDos.get_attribute("pos", areasImagenPagina.at(contadorFotos)); 02661 pag->LoadFoto(rutaFotoPagina, wFotoPagina*(this->controlador->getWVisorAlbum())/462, hFotoPagina*(this->controlador->getHVisorAlbum())/321, xFotoPagina*(this->controlador->getWVisorAlbum())/462, yFotoPagina*(this->controlador->getHVisorAlbum())/321, pos); 02662 }catch(std::exception& e){ 02663 Error *err=new Error(1, e.what(), this); 02664 err->LanzarDialogo(); 02665 delete err; 02666 exit(1); 02667 } 02668 QPixmap *h; 02669 try{ 02670 h=new QPixmap(rutaFotoPagina.toAscii()); 02671 if(h->isNull()){ 02672 throw std::ios_base::failure(tr("No pudo abrirse una imagen de una de las páginas.").toStdString()); 02673 } 02674 }catch(std::exception& e){ 02675 Error *err=new Error(4, e.what(), this); 02676 err->LanzarDialogo(); 02677 delete err; 02678 exit(1); 02679 } 02680 QGraphicsPixmapItem *item2; 02681 if(h->width() > h->height()){ 02682 if(pag->getImagenPosVertical(contadorFotos)){ 02683 item2=new QGraphicsPixmapItem(h->scaled(hFotoPagina*(this->controlador->getHVisorAlbum())/321, wFotoPagina*(this->controlador->getWVisorAlbum())/462, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02684 item2->setPos((xFotoPagina*(this->controlador->getWVisorAlbum())/462) + (wFotoPagina*(this->controlador->getWVisorAlbum())/462), yFotoPagina*(this->controlador->getHVisorAlbum())/321); 02685 item2->setRotation(90); 02686 item2->setAcceptTouchEvents(true); 02687 }else{ 02688 item2=new QGraphicsPixmapItem(h->scaled(wFotoPagina*(this->controlador->getWVisorAlbum())/462, hFotoPagina*(this->controlador->getHVisorAlbum())/321, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02689 item2->setPos(xFotoPagina*(this->controlador->getWVisorAlbum())/462, yFotoPagina*(this->controlador->getHVisorAlbum())/321); 02690 02691 } 02692 }else{ 02693 if(!pag->getImagenPosVertical(contadorFotos)){ 02694 item2=new QGraphicsPixmapItem(h->scaled(hFotoPagina*(this->controlador->getHVisorAlbum())/321, wFotoPagina*(this->controlador->getWVisorAlbum())/462, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02695 item2->setPos((xFotoPagina*(this->controlador->getWVisorAlbum())/462) + (wFotoPagina*(this->controlador->getWVisorAlbum())/462), yFotoPagina*(this->controlador->getHVisorAlbum())/321); 02696 item2->setRotation(90); 02697 item2->setAcceptTouchEvents(true); 02698 }else{ 02699 item2=new QGraphicsPixmapItem(h->scaled(wFotoPagina*(this->controlador->getWVisorAlbum())/462, hFotoPagina*(this->controlador->getHVisorAlbum())/321, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02700 item2->setPos(xFotoPagina*(this->controlador->getWVisorAlbum())/462, yFotoPagina*(this->controlador->getHVisorAlbum())/321); 02701 02702 } 02703 } 02704 delete h; 02705 if(!pag->activadaMascara()){ 02706 02707 item2->setAcceptHoverEvents(true); 02708 } 02709 pag->versionReducida->scene()->addItem(item2); 02710 } 02711 02712 if(pag->activadaMascara() && pag->ColordeFondo()){ 02713 02714 02715 02716 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + pag->getMascara(); 02717 QImage *img=new QImage(path); 02718 QRgb color=pag->GetFondoColor().rgb(); 02719 for(int a=0; a < img->width(); a++){ 02720 for(int b=0; b < img->height(); b++){ 02721 if(img->pixel(a,b)!=0){ 02722 img->setPixel(a,b,color); 02723 } 02724 } 02725 } 02726 QPixmap *g=new QPixmap(); 02727 g->convertFromImage(*img, Qt::AutoColor); 02728 02729 02730 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02731 item->setPos(0, 0); 02732 item->setAcceptHoverEvents(false); 02733 pag->versionReducida->scene()->addItem(item); 02734 delete img; 02735 delete g; 02736 } 02737 02738 if(pag->activadaMascara() && !pag->ColordeFondo()){ 02739 02740 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + pag->getMascara(); 02741 QImage *img=new QImage(path); 02742 QImage *img2=new QImage(pag->GetFondoImagen()); 02743 QImage img22=img2->scaled(img->width(), img->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 02744 02745 02746 for(int a=0; a < img->width(); a++){ 02747 for(int b=0; b < img->height(); b++){ 02748 if(img->pixel(a,b)!=0){ 02749 img->setPixel(a,b,img22.pixel(a,b)); 02750 02751 } 02752 } 02753 } 02754 QPixmap *g=new QPixmap(); 02755 02756 g->convertFromImage(*img, Qt::AutoColor); 02757 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02758 item->setPos(0, 0); 02759 item->setAcceptHoverEvents(false); 02760 pag->versionReducida->scene()->addItem(item); 02761 delete img; 02762 delete img2; 02763 delete g; 02764 } 02765 02766 02767 02768 02769 parserDos.get_attribute("texto", elementDos, &textoPagina); 02770 try{ 02771 if(textoPagina!=0){ 02772 std::vector<ticpp::Element*> vectorTextosPagina; 02773 02774 02775 parser.find("texto", vectorTextosPagina, parser.find("textos", vectorPaginas.at(contador))); 02776 02777 for(unsigned contadorTextos=0; contadorTextos < vectorTextosPagina.size(); contadorTextos++){ 02778 02779 02780 QString contenidoTextoPagina= QString::fromUtf8(parser.get_attribute("contenido", vectorTextosPagina.at(contadorTextos)).c_str()); 02781 if(contenidoTextoPagina.contains("#amp")){ 02782 int index=0; 02783 QString codificacion= "#amp"; 02784 while(contenidoTextoPagina.contains(codificacion)){ 02785 index=contenidoTextoPagina.indexOf(codificacion, 0); 02786 contenidoTextoPagina.replace(index,codificacion.size(),"&"); 02787 } 02788 } 02789 if(contenidoTextoPagina.contains("#quot")){ 02790 int index=0; 02791 QString codificacion= "#quot"; 02792 while(contenidoTextoPagina.contains(codificacion)){ 02793 index=contenidoTextoPagina.indexOf(codificacion, 0); 02794 contenidoTextoPagina.replace(index,codificacion.size(),"\""); 02795 } 02796 } 02797 if(contenidoTextoPagina.contains("#apos")){ 02798 int index=0; 02799 QString codificacion= "#apos"; 02800 while(contenidoTextoPagina.contains(codificacion)){ 02801 index=contenidoTextoPagina.indexOf(codificacion, 0); 02802 contenidoTextoPagina.replace(index,codificacion.size(),"'"); 02803 } 02804 } 02805 if(contenidoTextoPagina.contains("#lt")){ 02806 int index=0; 02807 QString codificacion= "#lt"; 02808 while(contenidoTextoPagina.contains(codificacion)){ 02809 index=contenidoTextoPagina.indexOf(codificacion, 0); 02810 contenidoTextoPagina.replace(index,codificacion.size(),"<"); 02811 } 02812 } 02813 if(contenidoTextoPagina.contains("#gt")){ 02814 int index=0; 02815 QString codificacion= "#gt"; 02816 while(contenidoTextoPagina.contains(codificacion)){ 02817 index=contenidoTextoPagina.indexOf(codificacion, 0); 02818 contenidoTextoPagina.replace(index,codificacion.size(),">"); 02819 } 02820 } 02821 QGraphicsTextItem *TF=new QGraphicsTextItem(contenidoTextoPagina); 02822 02823 QFont fuenteTextoPagina; 02824 QString fuenteTextoPaginaQ= QString::fromUtf8(parser.get_attribute("fuente", vectorTextosPagina.at(contadorTextos)).c_str()); 02825 fuenteTextoPagina.fromString(fuenteTextoPaginaQ); 02826 02827 bool negritaTextoPagina, subrayadoTextoPagina, cursivaTextoPagina, centradoTextoPagina, verticalTextoPagina; 02828 02829 02830 if(parser.get_attribute("negrita", vectorTextosPagina.at(contadorTextos))=="si"){ 02831 negritaTextoPagina=true; 02832 fuenteTextoPagina.setBold(true); 02833 }else{ 02834 fuenteTextoPagina.setBold(false); 02835 negritaTextoPagina=false; 02836 } 02837 02838 if(parser.get_attribute("subrayado", vectorTextosPagina.at(contadorTextos))=="si"){ 02839 subrayadoTextoPagina=true; 02840 fuenteTextoPagina.setUnderline(true); 02841 02842 }else{ 02843 fuenteTextoPagina.setUnderline(false); 02844 subrayadoTextoPagina=false; 02845 } 02846 02847 if(parser.get_attribute("cursiva", vectorTextosPagina.at(contadorTextos))=="si"){ 02848 cursivaTextoPagina=true; 02849 fuenteTextoPagina.setItalic(true); 02850 }else{ 02851 cursivaTextoPagina=false; 02852 fuenteTextoPagina.setItalic(false); 02853 } 02854 int ptTextoPagina; 02855 std::vector<ticpp::Element*> areasTextoPagina; 02856 parserDos.find("area_texto", areasTextoPagina, parserDos.find("areas_texto", elementDos)); 02857 parserDos.get_attribute("pt", areasTextoPagina.at(contadorTextos), &ptTextoPagina); 02858 02859 02860 02861 int redTextoPagina, greenTextoPagina, blueTextoPagina; 02862 parser.get_attribute("red", vectorTextosPagina.at(contadorTextos), &redTextoPagina); 02863 parser.get_attribute("green", vectorTextosPagina.at(contadorTextos), &greenTextoPagina); 02864 parser.get_attribute("blue", vectorTextosPagina.at(contadorTextos), &blueTextoPagina); 02865 pag->LoadTexto(cursivaTextoPagina, negritaTextoPagina, subrayadoTextoPagina, contenidoTextoPagina, fuenteTextoPagina, QColor(redTextoPagina, greenTextoPagina, blueTextoPagina)); 02866 pag->LoadNumTextos(textoPagina); 02867 02868 int wTextoPagina, posXTextoPagina, posYTextoPagina; 02869 parserDos.get_attribute("w", areasTextoPagina.at(contadorTextos), &wTextoPagina); 02870 parserDos.get_attribute("pos_x", areasTextoPagina.at(contadorTextos), &posXTextoPagina); 02871 parserDos.get_attribute("pos_y", areasTextoPagina.at(contadorTextos), &posYTextoPagina); 02872 if(parserDos.get_attribute("centrado", areasTextoPagina.at(contadorTextos))=="si"){ 02873 centradoTextoPagina=true; 02874 QTextCursor cursor = TF->textCursor(); 02875 QTextBlockFormat bfmt = cursor.blockFormat(); 02876 bfmt.setAlignment(Qt::AlignCenter); 02877 cursor.setBlockFormat(bfmt); 02878 TF->setTextCursor(cursor); 02879 }else{ 02880 centradoTextoPagina=false; 02881 } 02882 02883 if(parserDos.get_attribute("orientacion", areasTextoPagina.at(contadorTextos))=="vertical"){ 02884 verticalTextoPagina=true; 02885 TF->setRotation(90); 02886 02887 }else{ 02888 verticalTextoPagina=false; 02889 } 02890 pag->LoadTextoResto(contadorTextos, wTextoPagina*(this->controlador->getWVisorAlbum())/462, ptTextoPagina*(this->controlador->getWVisorAlbum())/462, posXTextoPagina*(this->controlador->getWVisorAlbum())/462, posYTextoPagina*(this->controlador->getHVisorAlbum())/321, parserDos.get_attribute("orientacion", areasTextoPagina.at(contadorTextos)), parserDos.get_attribute("centrado", areasTextoPagina.at(contadorTextos))); 02891 02892 QFont *fuenteFinalTexto=new QFont(pag->GetVectorTextos().at(contadorTextos).fuente.family(), pag->GetVectorTextos().at(contadorTextos).puntos, 50, pag->GetVectorTextos().at(contadorTextos).cursiva); 02893 TF->setDefaultTextColor(QColor(redTextoPagina, greenTextoPagina, blueTextoPagina)); 02894 TF->setFont(*fuenteFinalTexto); 02895 delete fuenteFinalTexto; 02896 TF->setTextWidth(pag->GetVectorTextos().at(contadorTextos).w); 02897 02898 TF->setPos(pag->GetVectorTextos().at(contadorTextos).pos_x, pag->GetVectorTextos().at(contadorTextos).pos_y); 02899 TF->setAcceptHoverEvents(true); 02900 pag->versionReducida->scene()->addItem(TF); 02901 02902 } 02903 } 02904 }catch(std::exception& e){ 02905 Error *err=new Error(1, e.what(), this); 02906 err->LanzarDialogo(); 02907 delete err; 02908 exit(1); 02909 } 02910 02911 if(hayMarcos){ 02912 QList<marco> listaMarcos; 02913 for(unsigned contadorMarcos=0; contadorMarcos < vectorMarcosPagina.size(); contadorMarcos++){ 02914 QString rutaMarco= QString::fromAscii(parser.get_attribute("nombre", vectorMarcosPagina.at(contadorMarcos)).c_str()); 02915 QString tipo= QString::fromAscii(parser.get_attribute("tipo", vectorMarcosPagina.at(contadorMarcos)).c_str()); 02916 int id; 02917 parser.get_attribute("id", vectorMarcosPagina.at(contadorMarcos), &id); 02918 marco m; 02919 m.nombre=new QString(rutaMarco); 02920 m.tipo=new QString(tipo); 02921 m.idFoto=id; 02922 listaMarcos.push_back(m); 02923 } 02924 pag->SetMarcos(listaMarcos); 02925 //Ahora introducimos los marcos, si es que los hay 02926 if(pag->ContieneMarcos()){ 02927 for(int contadorMarcos2=0; contadorMarcos2 < pag->getMarcos().size(); contadorMarcos2++){ 02928 if(!pag->getMarcos().at(contadorMarcos2).nombre->isEmpty()){ 02929 02930 QPixmap *h; 02931 02932 QString marcoName=this->directoriodetrabajo.absolutePath()+"/frames/"; 02933 marcoName.append(pag->getMarcos().at(contadorMarcos2).nombre); 02934 h=new QPixmap(marcoName); 02935 02936 try{ 02937 if(h->isNull()){ 02938 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 02939 } 02940 }catch(std::exception& e){ 02941 Error *err=new Error(4, e.what(), this); 02942 err->LanzarDialogo(); 02943 delete err; 02944 exit(1); 02945 } 02946 QGraphicsPixmapItem *item2; 02947 int numeroFoto=pag->getMarcos().at(contadorMarcos2).idFoto; 02948 02949 item2=new QGraphicsPixmapItem(h->scaled(pag->GetVectorImagenes().at(numeroFoto-1).w, pag->GetVectorImagenes().at(numeroFoto-1).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 02950 item2->setPos(pag->GetVectorImagenes().at(numeroFoto-1).pos_x, pag->GetVectorImagenes().at(numeroFoto-1).pos_y); 02951 delete h; 02952 item2->setAcceptHoverEvents(true); 02953 pag->versionReducida->scene()->addItem(item2); 02954 }} 02955 } 02956 } 02957 barra->setValue(5+ii); 02958 02959 barra->setValue(6+ii); 02960 if(editadaPagina=="si"){ 02961 pag->SetPaginaEditada(); 02962 02963 } 02964 ui->pushPagAnterior->show(); 02965 ui->pushPagSiguiente->show(); 02966 ui->pushPagSiguiente->setEnabled(true); 02967 ui->action_Avanzar_P_gina->setEnabled(true); 02968 ui->actionAvanzarBoton->setEnabled(true); 02969 ui->pushPagAnterior->setEnabled(true); 02970 ui->action_Retroceder_p_gina->setEnabled(true); 02971 ui->actionRetrocederBoton->setEnabled(true); 02972 if(this->IndicePaginas==0){ 02973 ui->pushPagAnterior->setDisabled(true); 02974 ui->action_Retroceder_p_gina->setDisabled(true); 02975 ui->actionRetrocederBoton->setDisabled(true); 02976 } 02977 02978 pag->setObjetosPagina(pag->versionReducida->items()); 02979 02980 this->a->paginas.push_back(pag); 02981 02982 } 02983 } 02984 02985 if(hayPaginas){ 02986 02987 if(hayDesplPaginas){ 02988 try{ 02989 02990 for(unsigned ultimo=0; ultimo < this->a->paginas.size(); ultimo++){ 02991 tipoPosicionesItems aux; 02992 this->posicionesItemsPaginas.insert(ultimo, aux); 02993 this->paginasDesplazadas.insert(ultimo, ""); 02994 } 02995 this->DesactivarParteEdicion=true; 02996 for(unsigned a=0; a<DesplazamientosPaginas.size(); a++){ 02997 02998 int numPagina; 02999 parser.get_attribute("pagina", DesplazamientosPaginas.at(a), &numPagina); 03000 03001 std::vector<ticpp::Element*> desplazamientos; 03002 parser.find("Desplazamiento", desplazamientos, DesplazamientosPaginas.at(a)); 03003 03004 tipoPosicionesItems auxItems; 03005 03006 for(unsigned b=0; b < desplazamientos.size(); b++){ 03007 int posX, posY; 03008 static tipoCoordenadas aux; 03009 parser.get_attribute("posx", desplazamientos.at(b), &posX); 03010 parser.get_attribute("posy", desplazamientos.at(b), &posY); 03011 aux.x=posX; 03012 aux.y=posY; 03013 auxItems.insert(b, aux); 03014 03015 } 03016 this->posicionesItemsPaginas.replace(numPagina, auxItems); 03017 this->hayDesplazamientoPagina=true; 03018 QString texto9; 03019 texto9=" <Desplazamientos pagina=\"" + QString::number(numPagina) + "\">\n"; 03020 for(int h=0; h <this->posicionesItemsPaginas[numPagina].size(); h++){ 03021 texto9= texto9 + " <Desplazamiento posx=\"" + QString::number(this->posicionesItemsPaginas[numPagina].at(h).x) + "\" posy=\"" + QString::number(this->posicionesItemsPaginas[numPagina].at(h).y) + "\"/>\n"; 03022 } 03023 texto9= texto9 + " </Desplazamientos>\n"; 03024 03025 this->paginasDesplazadas.replace(numPagina, texto9); 03026 03027 int x=0; 03028 for(int z=0; z<this->a->paginas[numPagina]->GetObjetosPagina().size(); z++){ 03029 if(this->a->paginas[numPagina]->GetObjetosPagina().at(z)->acceptHoverEvents()){ 03030 this->a->paginas[numPagina]->setPosicionObjeto(z, this->posicionesItemsPaginas[numPagina].at(x).x, this->posicionesItemsPaginas[numPagina].at(x).y); 03031 x++; 03032 } 03033 } 03034 03035 } 03036 }catch(std::exception& e){ 03037 Error *err=new Error(1, e.what(), this); 03038 err->LanzarDialogo(); 03039 delete err; 03040 exit(1); 03041 } 03042 }else{ 03043 for(unsigned ultimo=0; ultimo < this->a->paginas.size(); ultimo++){ 03044 tipoPosicionesItems aux; 03045 this->posicionesItemsPaginas.insert(ultimo, aux); 03046 this->paginasDesplazadas.insert(ultimo, ""); 03047 } 03048 } 03049 03050 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 03051 for(unsigned contadorPaginasLinea=0; contadorPaginasLinea < this->a->paginas.size(); contadorPaginasLinea++){ 03052 a->paginas[contadorPaginasLinea]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 03053 03054 } 03055 } 03056 } 03057 03058 03059 barra->setValue(7+ii); 03060 03061 barra->setValue(8+ii); 03062 barra->hide(); 03063 }else{ 03064 ui->plantillaPreview->setHidden(false); 03065 } 03066 delete barra; 03067 this->activadaCarga=false; 03068 this->seHaCargado=true; 03069 this->preguntaSeguridad=true; 03070 03071 } 03072 03073 void FormPrincipal::closeEvent(QCloseEvent *evento) 03074 { 03075 QMessageBox::StandardButton reply; 03076 reply = QMessageBox::question(this, tr("Advertencia"), tr("¿Esta seguro de que desea salir de oPenAlbum?"), QMessageBox::Yes | QMessageBox::No); 03077 if (reply == QMessageBox::Yes){ 03078 this->NuevoAlbum(); 03079 evento->accept(); 03080 this->close(); 03081 }else{ 03082 evento->ignore(); 03083 } 03084 } 03085 03086 03087 void FormPrincipal::GuardarComo(){ 03088 QProgressBar *barra= new QProgressBar(this); 03089 static int ii; 03090 int wAux=this->ui->statusBar->width(); 03091 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 03092 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 03093 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 03094 03095 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 03096 03097 03098 03099 barra->setMinimum(0); 03100 barra->setMaximum(8+this->a->paginas.size()); 03101 QString texto, imagenFondoPortada, redPortada, greenPortada, bluePortada; 03102 //Abrimos el diálogo 03103 QFileDialog::Options options; 03104 QString selectedFilter="OPA: Open Album File (*.opa)"; 03105 QString fileName = QFileDialog::getSaveFileName(this,tr("Guardar album"), this->directorioCasaUsuario, tr("OPA: Open Album File (*.opa)"), &selectedFilter, options); 03106 this->ui->statusBar->setMaximumWidth(986-270); 03107 bool cancelado=false; 03108 if(fileName.isEmpty()){ 03109 cancelado=true; 03110 }else{ 03111 this->rutaGuardado= fileName; 03112 this->ActivadoGuardado=true; 03113 } 03114 QString fileNm; 03115 if(!this->rutaGuardado.contains(".opa")){ 03116 fileNm=this->rutaGuardado + ".opa"; 03117 this->rutaGuardado= this->rutaGuardado + ".opa"; 03118 }else{ 03119 fileNm=this->rutaGuardado; 03120 } 03121 QFile existencia; 03122 if(existencia.exists(fileNm)){ 03123 this->EliminarAlbum(fileNm, false); 03124 } 03125 03126 if(!cancelado){ 03127 barra->show(); 03128 barra->setValue(1); 03129 QString fileNm; 03130 if(!this->rutaGuardado.contains(".opa")){ 03131 fileNm=this->rutaGuardado + ".opa"; 03132 this->rutaGuardado= this->rutaGuardado + ".opa"; 03133 }else{ 03134 fileNm=this->rutaGuardado; 03135 } 03136 03137 03138 barra->setValue(2); 03139 03140 QFile file(fileNm.toStdString().c_str()); 03141 03142 try{ 03143 03144 file.open(QIODevice::WriteOnly | QIODevice::Truncate); 03145 03146 }catch(std::exception& e){ 03147 Error *err=new Error(5, e.what(), this); 03148 err->LanzarDialogo(); 03149 delete err; 03150 exit(1); 03151 } 03152 QTextStream textStream(&file); 03153 bool ColorFondo=this->a->portada->ColordeFondo(); 03154 QString subrayadoFrontal, subrayadoTrasero, subrayadoLateral, negritaFrontal, negritaLateral, negritaTrasero, cursivaFrontal, cursivaLateral, cursivaTrasero; 03155 if(this->a->portada->SubrayadoTextoFrontal()){ 03156 subrayadoFrontal="si"; 03157 }else{ 03158 subrayadoFrontal="no"; 03159 } 03160 03161 if(this->a->portada->SubrayadoTextoLateral()){ 03162 subrayadoLateral="si"; 03163 }else{ 03164 subrayadoLateral="no"; 03165 } 03166 03167 if(this->a->portada->SubrayadoTextoTrasera()){ 03168 subrayadoTrasero="si"; 03169 }else{ 03170 subrayadoTrasero="no"; 03171 } 03172 barra->setValue(3); 03173 if(this->a->portada->NegritaTextoFrontal()){ 03174 negritaFrontal="si"; 03175 }else{ 03176 negritaFrontal="no"; 03177 } 03178 03179 if(this->a->portada->NegritaTextoLateral()){ 03180 negritaLateral="si"; 03181 }else{ 03182 negritaLateral="no"; 03183 } 03184 03185 if(this->a->portada->NegritaTextoTrasera()){ 03186 negritaTrasero="si"; 03187 }else{ 03188 negritaTrasero="no"; 03189 } 03190 barra->setValue(4); 03191 if(this->a->portada->CursivaTextoFrontal()){ 03192 cursivaFrontal="si"; 03193 }else{ 03194 cursivaFrontal="no"; 03195 } 03196 03197 03198 if(this->a->portada->CursivaTextoLateral()){ 03199 cursivaLateral="si"; 03200 }else{ 03201 cursivaLateral="no"; 03202 } 03203 03204 03205 if(this->a->portada->CursivaTextoTrasera()){ 03206 cursivaTrasero="si"; 03207 }else{ 03208 cursivaTrasero="no"; 03209 } 03210 03211 03212 if(ColorFondo){ 03213 03214 redPortada=QString::number(this->a->portada->FondoClr().red()); 03215 greenPortada=QString::number(this->a->portada->FondoClr().green()); 03216 bluePortada=QString::number(this->a->portada->FondoClr().blue()); 03217 }else{ 03218 03219 03220 redPortada="0"; 03221 greenPortada="0"; 03222 bluePortada="0"; 03223 } 03224 barra->setValue(5); 03225 QString siOno=""; 03226 if(this->creadasPaginas){ 03227 siOno="si"; 03228 }else{ 03229 siOno="no"; 03230 03231 } 03232 QString nombreSerieFondoPortada=""; 03233 QString separador= "_"; 03234 if(!ColorFondo){ 03235 QPixmap *pixFondo; 03236 try{ 03237 pixFondo= new QPixmap(this->a->portada->FondoImg()); 03238 if(pixFondo->isNull()){ 03239 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 03240 } 03241 }catch(std::exception& e){ 03242 Error *err=new Error(4, e.what(), this); 03243 err->LanzarDialogo(); 03244 delete err; 03245 exit(1); 03246 } 03247 nombreSerieFondoPortada= nombreSerieFondoPortada + this->directorioCasaUsuario +"/.openAlbum/" + this->rutaGuardado.section("/", -1) + separador + "fondo" + separador + "portada.JPG"; 03248 try{ 03249 if(!pixFondo->save(nombreSerieFondoPortada)){ 03250 //excepción 03251 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03252 } 03253 }catch(std::exception& e){ 03254 Error *err=new Error(5, e.what(), this); 03255 err->LanzarDialogo(); 03256 delete err; 03257 exit(1); 03258 } 03259 delete pixFondo; 03260 }else{ 03261 nombreSerieFondoPortada="no"; 03262 } 03263 QPixmap *pixFron, *pixTras; 03264 try{ 03265 pixFron= new QPixmap(this->a->portada->RutaFotoFrontal()); 03266 pixTras= new QPixmap(this->a->portada->RutaFotoTrasera()); 03267 if(pixFron->isNull()){ 03268 throw std::ios_base::failure(tr("No pudo abrirse la imagen frontal de la portada.").toStdString()); 03269 } 03270 if(pixTras->isNull()){ 03271 throw std::ios_base::failure(tr("No pudo abrirse la imagen trasera de la portada.").toStdString()); 03272 } 03273 }catch(std::exception& e){ 03274 Error *err=new Error(4, e.what(), this); 03275 err->LanzarDialogo(); 03276 delete err; 03277 exit(1); 03278 } 03279 QString nombreSerieFron= this->directorioCasaUsuario + "/.openAlbum/"; 03280 QString nombreSerieTras= this->directorioCasaUsuario + "/.openAlbum/"; 03281 03282 03283 QString portada, fotoFron, fotoTras; 03284 portada="portada"; 03285 fotoFron="frontal"; 03286 fotoTras="trasera"; 03287 nombreSerieFron= nombreSerieFron + this->rutaGuardado.section("/", -1) + separador + portada + separador + fotoFron +".JPG"; 03288 nombreSerieTras= nombreSerieTras + this->rutaGuardado.section("/", -1) + separador + portada + separador + fotoTras +".JPG"; 03289 barra->setValue(6); 03290 03291 try{ 03292 if(!pixFron->save(nombreSerieFron)){ 03293 //excepción 03294 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03295 } 03296 if(!pixTras->save(nombreSerieTras)){ 03297 //excepción 03298 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03299 } 03300 }catch(std::exception& e){ 03301 Error *err=new Error(5, e.what(), this); 03302 err->LanzarDialogo(); 03303 delete err; 03304 exit(1); 03305 } 03306 delete pixFron; 03307 delete pixTras; 03308 QString despFP, despTP; 03309 QString posXNuevoFrontal, posYNuevoFrontal, posXNuevoTrasero, posYNuevoTrasero; 03310 QString totalFrontal=""; 03311 QString totalTrasero=""; 03312 if(this->hayDesplazamientoPortadaFotos){ 03313 despFP="si"; 03314 posXNuevoFrontal.setNum(this->a->portada->PosicionXImagenFrontal()); 03315 posYNuevoFrontal.setNum(this->a->portada->PosicionYImagenFrontal()); 03316 posXNuevoTrasero.setNum(this->a->portada->PosicionXImagenTrasera()); 03317 posYNuevoTrasero.setNum(this->a->portada->PosicionYImagenTrasera()); 03318 totalFrontal= totalFrontal + "\" posXNueva=\"" + posXNuevoFrontal + "\" posYNueva=\"" + posYNuevoFrontal; 03319 totalTrasero= totalTrasero + "\" posXNueva=\"" + posXNuevoTrasero + "\" posYNueva=\"" + posYNuevoTrasero; 03320 }else{ 03321 despFP="no"; 03322 } 03323 barra->setValue(7); 03324 if(this->hayDesplazamientoPortadaTextos){ 03325 despTP="si"; 03326 }else{ 03327 despTP="no"; 03328 } 03329 //Ahora tratamos los caracteres especiales de los xml 03330 QString textoFrontal, textoTrasero, textoLateral; 03331 textoFrontal = this->a->portada->TextoFrontal(); 03332 if(this->a->portada->TextoFrontal().contains("&")){ 03333 03334 int index=0; 03335 while(textoFrontal.contains("&")){ 03336 index = textoFrontal.indexOf("&", 0); 03337 textoFrontal.replace(index,1, "#amp"); 03338 } 03339 } 03340 03341 if(this->a->portada->TextoFrontal().contains("\"")){ 03342 03343 int index=0; 03344 while(textoFrontal.contains("\"")){ 03345 index = textoFrontal.indexOf("\"", 0); 03346 textoFrontal.replace(index,1, "#quot"); 03347 } 03348 } 03349 03350 if(this->a->portada->TextoFrontal().contains("<")){ 03351 03352 int index=0; 03353 while(textoFrontal.contains("<")){ 03354 index = textoFrontal.indexOf("<", 0); 03355 textoFrontal.replace(index,1, "#lt"); 03356 } 03357 } 03358 03359 if(this->a->portada->TextoFrontal().contains(">")){ 03360 03361 int index=0; 03362 while(textoFrontal.contains(">")){ 03363 index = textoFrontal.indexOf(">", 0); 03364 textoFrontal.replace(index,1, "#gt"); 03365 } 03366 } 03367 03368 if(this->a->portada->TextoFrontal().contains("'")){ 03369 03370 int index=0; 03371 while(textoFrontal.contains("'")){ 03372 index = textoFrontal.indexOf("'", 0); 03373 textoFrontal.replace(index,1, "#apos"); 03374 } 03375 } 03376 textoLateral = this->a->portada->TextoLateral(); 03377 if(this->a->portada->TextoLateral().contains("&")){ 03378 03379 int index=0; 03380 while(textoLateral.contains("&")){ 03381 index = textoLateral.indexOf("&", 0); 03382 textoLateral.replace(index,1, "#amp"); 03383 } 03384 } 03385 03386 if(this->a->portada->TextoLateral().contains("\"")){ 03387 03388 int index=0; 03389 while(textoLateral.contains("\"")){ 03390 index = textoLateral.indexOf("\"", 0); 03391 textoLateral.replace(index,1, "#quot"); 03392 } 03393 } 03394 03395 03396 if(this->a->portada->TextoLateral().contains("<")){ 03397 03398 int index=0; 03399 while(textoLateral.contains("<")){ 03400 index = textoLateral.indexOf("<", 0); 03401 textoLateral.replace(index,1, "#lt"); 03402 } 03403 } 03404 03405 if(this->a->portada->TextoLateral().contains(">")){ 03406 03407 int index=0; 03408 while(textoLateral.contains(">")){ 03409 index = textoLateral.indexOf(">", 0); 03410 textoLateral.replace(index,1, "#gt"); 03411 } 03412 } 03413 03414 if(this->a->portada->TextoLateral().contains("'")){ 03415 03416 int index=0; 03417 while(textoLateral.contains("'")){ 03418 index = textoLateral.indexOf("'", 0); 03419 textoLateral.replace(index,1, "#apos"); 03420 } 03421 } 03422 textoTrasero = this->a->portada->TextoTrasera(); 03423 if(this->a->portada->TextoTrasera().contains("&")){ 03424 03425 int index=0; 03426 while(textoTrasero.contains("&")){ 03427 index = textoTrasero.indexOf("&", 0); 03428 textoTrasero.replace(index,1, "#amp"); 03429 } 03430 } 03431 03432 03433 if(this->a->portada->TextoTrasera().contains("\"")){ 03434 03435 int index=0; 03436 while(textoTrasero.contains("\"")){ 03437 index = textoTrasero.indexOf("\"", 0); 03438 textoTrasero.replace(index,1, "#quot"); 03439 } 03440 } 03441 03442 03443 if(this->a->portada->TextoTrasera().contains("<")){ 03444 03445 int index=0; 03446 while(textoTrasero.contains("<")){ 03447 index = textoTrasero.indexOf("<", 0); 03448 textoTrasero.replace(index,1, "#lt"); 03449 } 03450 } 03451 03452 03453 if(this->a->portada->TextoTrasera().contains(">")){ 03454 03455 int index=0; 03456 while(textoTrasero.contains(">")){ 03457 index = textoTrasero.indexOf(">", 0); 03458 textoTrasero.replace(index,1, "#gt"); 03459 } 03460 } 03461 03462 03463 if(this->a->portada->TextoTrasera().contains("'")){ 03464 03465 int index=0; 03466 while(textoTrasero.contains("'")){ 03467 index = textoTrasero.indexOf("'", 0); 03468 textoTrasero.replace(index,1, "#apos"); 03469 } 03470 } 03471 // ahora modificar la carga y posteriormente hacer lo mismo para las páginas 03472 QString creado("no"); 03473 if(this->creadoConAsistente){ 03474 creado="si"; 03475 } 03476 QString textura("no"); 03477 if(this->seleccionadaTextura){ 03478 textura="si"; 03479 } 03480 QString orden(""); 03481 if(this->getOrdenacionAlfabetica()){ 03482 orden="alfabetica"; 03483 }else{ 03484 if(this->getOrdenacionFechaCreciente()){ 03485 orden="fechascreciente"; 03486 }else{ 03487 if(this->getOrdenacionFechaDecreciente()){ 03488 orden="fechasdecreciente"; 03489 }else{ 03490 orden="ordenpersonalizado"; 03491 } 03492 } 03493 } 03494 if(this->a->portada->GetEditada()){ 03495 texto = "<album orden=\"" + orden + "\" asistente=\"" + creado + "\" fecha=\"" + this->fechaCreacion + "\" paginas=\"" + siOno + "\">\n <portada textura=\"" + textura + "\" plantilla=\"" + this->a->portada->RutaPlantilla() + "\" imagen_fondo=\"" + nombreSerieFondoPortada +"\" red=\""+ redPortada +"\" green=\"" + greenPortada + "\" blue=\""+ bluePortada +"\" tam_w=\"" + QString::number(this->a->portada->GetW()) + "\" tam_h=\"" + QString::number(this->a->portada->GetH()) + "\" despFotos=\"" + despFP + "\" despTextos=\"" + despTP + "\">\n <texto_lat texto=\"" + textoLateral + "\" fuente=\"" + this->a->portada->FuenteTextoLateral().toString() + "\" negrita=\"" + negritaLateral + "\" subrayado=\"" + subrayadoLateral + "\" cursiva=\"" + cursivaLateral +"\" red=\"" + QString::number(this->a->portada->ColorTextoLateral().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoLateral().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoLateral().blue()) + "\"/>\n <texto_fro texto=\"" + textoFrontal + "\" fuente=\"" + this->a->portada->FuenteTextoFrontal().toString() + "\" negrita=\"" + negritaFrontal + "\" subrayado=\"" + subrayadoFrontal + "\" cursiva=\"" + cursivaFrontal + "\" red=\"" + QString::number(this->a->portada->ColorTextoFrontal().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoFrontal().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoFrontal().blue()) + "\"/>\n <texto_tra texto=\"" + textoTrasero + "\" fuente=\"" + this->a->portada->FuenteTextoTrasera().toString() + "\" negrita=\"" + negritaTrasero + "\" subrayado=\"" + subrayadoTrasero + "\" cursiva=\"" + cursivaTrasero + "\" red=\"" + QString::number(this->a->portada->ColorTextoTrasera().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoTrasera().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoTrasera().blue()) + "\"/>\n <imagen_fro ruta=\"" + nombreSerieFron + totalFrontal + "\"/>\n <imagen_tra ruta=\"" + nombreSerieTras + totalTrasero +"\"/>\n <Desplazamientos>\n" + this->portadaDesplazada + " </Desplazamientos>\n </portada>\n"; 03496 }else{ 03497 texto = "<album orden=\"" + orden + "\" asistente=\"" + creado + "\" fecha=\"" + this->fechaCreacion + "\" paginas=\"" + siOno + "\">\n <portada textura=\"" + textura + "\" plantilla=\"" + this->a->portada->RutaPlantilla() + "\" imagen_fondo=\"" + nombreSerieFondoPortada +"\" red=\""+ redPortada +"\" green=\"" + greenPortada + "\" blue=\""+ bluePortada +"\" tam_w=\"" + QString::number(this->a->portada->GetW()) + "\" tam_h=\"" + QString::number(this->a->portada->GetH()) + "\" despFotos=\"" + despFP + "\" despTextos=\"" + despTP + "\">\n <texto_lat texto=\"" + textoLateral + "\" fuente=\"" + this->a->portada->FuenteTextoLateral().toString() + "\" negrita=\"" + negritaLateral + "\" subrayado=\"" + subrayadoLateral + "\" cursiva=\"" + cursivaLateral +"\" red=\"" + QString::number(this->a->portada->ColorTextoLateral().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoLateral().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoLateral().blue()) + "\"/>\n <texto_fro texto=\"" + textoFrontal + "\" fuente=\"" + this->a->portada->FuenteTextoFrontal().toString() + "\" negrita=\"" + negritaFrontal + "\" subrayado=\"" + subrayadoFrontal + "\" cursiva=\"" + cursivaFrontal + "\" red=\"" + QString::number(this->a->portada->ColorTextoFrontal().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoFrontal().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoFrontal().blue()) + "\"/>\n <texto_tra texto=\"" + textoTrasero + "\" fuente=\"" + this->a->portada->FuenteTextoTrasera().toString() + "\" negrita=\"" + negritaTrasero + "\" subrayado=\"" + subrayadoTrasero + "\" cursiva=\"" + cursivaTrasero + "\" red=\"" + QString::number(this->a->portada->ColorTextoTrasera().red()) + "\" green=\"" + QString::number(this->a->portada->ColorTextoTrasera().green()) + "\" blue=\"" + QString::number(this->a->portada->ColorTextoTrasera().blue()) + "\"/>\n <imagen_fro ruta=\"" + nombreSerieFron + totalFrontal + "\"/>\n <imagen_tra ruta=\"" + nombreSerieTras + totalTrasero + "\"/>\n </portada>\n"; 03498 } 03499 QString texto2, texto3, texto4, texto5, texto6, texto8, texto9, textoFinal; 03500 texto5=""; 03501 texto2=""; 03502 barra->setValue(8); 03503 if(this->creadasPaginas){ 03504 int contadNumPagina=0; 03505 03506 03507 for(unsigned i=0; i< this->a->paginas.size(); i++){ 03508 barra->setValue(8+i); 03509 QString imagenFondoPagina, redFondoPagina, greenFondoPagina, blueFondoPagina, editada; 03510 editada=""; 03511 if(this->a->GetPagina(i)->ColordeFondo()){ 03512 imagenFondoPagina="no"; 03513 redFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().red()); 03514 greenFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().green()); 03515 blueFondoPagina=QString::number(this->a->GetPagina(i)->GetFondoColor().blue()); 03516 }else{ 03517 QPixmap *pixFondoPag; 03518 try{ 03519 pixFondoPag= new QPixmap(this->a->GetPagina(i)->GetFondoImagen()); 03520 if(pixFondoPag->isNull()){ 03521 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la pagina.").toStdString()); 03522 } 03523 }catch(std::exception& e){ 03524 Error *err=new Error(4, e.what(), this); 03525 err->LanzarDialogo(); 03526 delete err; 03527 exit(1); 03528 } 03529 imagenFondoPagina=imagenFondoPagina + this->directorioCasaUsuario +"/.openAlbum/" + this->rutaGuardado.section("/", -1) + separador + "fondo" + separador + "pagina" + separador + QString::number(i) + ".JPG"; 03530 redFondoPagina="0"; 03531 greenFondoPagina="0"; 03532 blueFondoPagina="0"; 03533 try{ 03534 if(!pixFondoPag->save(imagenFondoPagina)){ 03535 //excepción 03536 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03537 } 03538 }catch(std::exception& e){ 03539 Error *err=new Error(5, e.what(), this); 03540 err->LanzarDialogo(); 03541 delete err; 03542 exit(1); 03543 } 03544 delete pixFondoPag; 03545 } 03546 03547 if(i==0){ 03548 if(this->a->GetPagina(i)->GetPaginaEditada()){ 03549 editada="si"; 03550 }else{ 03551 editada="no"; 03552 } 03553 if(this->a->GetPagina(i)->ContieneMarcos()){ 03554 texto2= " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"si\">\n"; 03555 }else{ 03556 texto2= " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"no\">\n"; 03557 } 03558 texto3=" <fotos>\n"; 03559 int contadNumFoto=0; 03560 for(unsigned j=0; j< this->a->GetPagina(i)->GetVectorImagenes().size(); j++){ 03561 03562 QPixmap *pix; 03563 try{ 03564 pix= new QPixmap(this->a->GetPagina(i)->GetVectorImagenes().at(j).ruta); 03565 }catch(std::exception& e){ 03566 Error *err=new Error(2, e.what(), this); 03567 err->LanzarDialogo(); 03568 delete err; 03569 exit(1); 03570 } 03571 QString nombreSerie= this->directorioCasaUsuario + "/.openAlbum/"; 03572 QString separador= "_"; 03573 QString pagina, foto; 03574 pagina.setNum(contadNumPagina); 03575 foto.setNum(contadNumFoto); 03576 nombreSerie= nombreSerie + this->rutaGuardado.section("/", -1) + foto + separador + pagina +".JPG"; 03577 03578 03579 try{ 03580 if(!pix->save(nombreSerie)){ 03581 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03582 } 03583 }catch(std::exception& e){ 03584 Error *err=new Error(5, e.what(), this); 03585 err->LanzarDialogo(); 03586 delete err; 03587 exit(1); 03588 } 03589 delete pix; 03590 texto3=texto3 + " <foto ruta=\"" + nombreSerie + "\"/>\n"; 03591 contadNumFoto++; 03592 } 03593 03594 if(this->a->GetPagina(i)->ContieneTextos()){ 03595 texto5=" <textos>\n"; 03596 for(unsigned t=0; t<this->a->GetPagina(i)->GetVectorTextos().size(); t++){ 03597 QString subrayado, negrita, cursiva, texto; 03598 try{ 03599 texto = this->a->GetPagina(i)->GetVectorTextos().at(t).texto; 03600 03601 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("&")){ 03602 int index=0; 03603 while(texto.contains("&")){ 03604 index = texto.indexOf("&", 0); 03605 texto.replace(index,1, "#amp"); 03606 } 03607 } 03608 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("\"")){ 03609 int index=0; 03610 while(texto.contains("\"")){ 03611 index = texto.indexOf("\"", 0); 03612 texto.replace(index,1, "#quot"); 03613 } 03614 } 03615 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("<")){ 03616 int index=0; 03617 while(texto.contains("<")){ 03618 index = texto.indexOf("<", 0); 03619 texto.replace(index,1, "#lt"); 03620 } 03621 } 03622 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains(">")){ 03623 int index=0; 03624 while(texto.contains(">")){ 03625 index = texto.indexOf(">", 0); 03626 texto.replace(index,1, "#gt"); 03627 } 03628 } 03629 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("'")){ 03630 int index=0; 03631 while(texto.contains("'")){ 03632 index = texto.indexOf("'", 0); 03633 texto.replace(index,1, "#apos"); 03634 } 03635 } 03636 03637 if(this->a->GetPagina(i)->GetVectorTextos().at(t).cursiva){ 03638 cursiva="si"; 03639 }else{ 03640 cursiva="no"; 03641 } 03642 03643 if(this->a->GetPagina(i)->GetVectorTextos().at(t).negrita){ 03644 negrita="si"; 03645 }else{ 03646 negrita="no"; 03647 } 03648 03649 if(this->a->GetPagina(i)->GetVectorTextos().at(t).subrayado){ 03650 subrayado="si"; 03651 }else{ 03652 subrayado="no"; 03653 } 03654 texto5= texto5 + " <texto contenido=\"" + texto + "\" fuente=\"" + this->a->GetPagina(i)->GetVectorTextos().at(t).fuente.toString() + "\" negrita=\"" + negrita + "\" subrayado=\"" + subrayado + "\" cursiva=\"" + cursiva + "\" red=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.red()) + "\" green=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.green()) + "\" blue=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.blue()) + "\"/>\n"; 03655 }catch(std::exception& e){ 03656 Error *err=new Error(1, e.what(), this); 03657 err->LanzarDialogo(); 03658 delete err; 03659 exit(1); 03660 } 03661 } 03662 texto5=texto5 + " </textos>\n"; 03663 } 03664 03665 03666 QString textoM=""; 03667 for(int contadormarcos=0; contadormarcos<this->a->GetPagina(i)->getMarcos().size(); contadormarcos++){ 03668 QString texto= " <marco id=\""+ QString::number(this->a->GetPagina(i)->getMarcos().at(contadormarcos).idFoto) + "\" nombre=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).nombre->toStdString().c_str() + "\" tipo=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).tipo->toStdString().c_str() + "\"/>\n"; 03669 textoM.append(texto); 03670 } 03671 if(this->a->GetPagina(i)->ContieneTextos()){ 03672 if(this->a->GetPagina(i)->ContieneMarcos()){ 03673 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + " <marcos>\n" + textoM + " </marcos>\n" + texto5; 03674 }else{ 03675 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + texto5; 03676 03677 } 03678 }else{ 03679 if(this->a->GetPagina(i)->ContieneMarcos()){ 03680 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n" + " <marcos>\n" + textoM + " </marcos>\n"; 03681 }else{ 03682 texto2=" <paginas>\n" + texto2 + texto3 + " </fotos>\n"; 03683 03684 } 03685 } 03686 03687 texto2= texto2 + " </pagina>\n"; 03688 03689 }else{ 03690 if(this->a->GetPagina(i)->GetPaginaEditada()){ 03691 editada="si"; 03692 }else{ 03693 editada="no"; 03694 } 03695 if(this->a->GetPagina(i)->ContieneMarcos()){ 03696 texto2= texto2 + " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"si\">\n"; 03697 }else{ 03698 texto2= texto2 + " <pagina plantilla=\"" + this->a->GetPagina(i)->RutaPlantilla() + "\" imagen_fondo=\"" + imagenFondoPagina + "\" red=\"" + redFondoPagina + "\" green=\"" + greenFondoPagina + "\" blue=\"" + blueFondoPagina + "\" editada=\"" + editada + "\" tam_w=\"" + QString::number(this->a->GetPagina(i)->GetW()) + "\" tam_h=\"" + QString::number(this->a->GetPagina(i)->GetH()) + "\" marcos=\"no\">\n"; 03699 } 03700 texto4=" <fotos>\n"; 03701 int contadNumFoto2=0; 03702 for(unsigned y=0; y< this->a->GetPagina(i)->GetVectorImagenes().size(); y++){ 03703 03704 QPixmap *pix; 03705 try{ 03706 pix= new QPixmap(this->a->GetPagina(i)->GetVectorImagenes().at(y).ruta); 03707 if(pix->isNull()){ 03708 throw std::ios_base::failure(tr("No pudo abrirse una de las imagenes.").toStdString()); 03709 } 03710 }catch(std::exception& e){ 03711 Error *err=new Error(4, e.what(), this); 03712 err->LanzarDialogo(); 03713 delete err; 03714 exit(1); 03715 } 03716 03717 QString nombreSerie= this->directorioCasaUsuario + "/.openAlbum/"; 03718 QString separador= "_"; 03719 QString pagina, foto; 03720 pagina.setNum(contadNumPagina); 03721 foto.setNum(contadNumFoto2); 03722 nombreSerie= nombreSerie + this->rutaGuardado.section("/", -1) + foto + separador + pagina +".JPG"; 03723 03724 try{ 03725 if(!pix->save(nombreSerie)){ 03726 throw std::ios_base::failure(tr("No se pudo guardar la imagen").toStdString()); 03727 } 03728 }catch(std::exception& e){ 03729 Error *err=new Error(5, e.what(), this); 03730 err->LanzarDialogo(); 03731 delete err; 03732 exit(1); 03733 } 03734 delete pix; 03735 texto4=texto4 + " <foto ruta=\"" + nombreSerie + "\"/>\n"; 03736 contadNumFoto2++; 03737 } 03738 03739 if(this->a->GetPagina(i)->ContieneTextos()){ 03740 texto6=" <textos>\n"; 03741 for(unsigned t=0; t<this->a->GetPagina(i)->GetVectorTextos().size(); t++){ 03742 QString subrayado, negrita, cursiva, texto; 03743 03744 try{ 03745 texto = this->a->GetPagina(i)->GetVectorTextos().at(t).texto; 03746 03747 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("&")){ 03748 int index=0; 03749 while(texto.contains("&")){ 03750 index = texto.indexOf("&", 0); 03751 texto.replace(index,1, "#amp"); 03752 } 03753 } 03754 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("\"")){ 03755 int index=0; 03756 while(texto.contains("\"")){ 03757 index = texto.indexOf("\"", 0); 03758 texto.replace(index,1, "#quot"); 03759 } 03760 } 03761 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("<")){ 03762 int index=0; 03763 while(texto.contains("<")){ 03764 index = texto.indexOf("<", 0); 03765 texto.replace(index,1, "#lt"); 03766 } 03767 } 03768 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains(">")){ 03769 int index=0; 03770 while(texto.contains(">")){ 03771 index = texto.indexOf(">", 0); 03772 texto.replace(index,1, "#gt"); 03773 } 03774 } 03775 if(this->a->GetPagina(i)->GetVectorTextos().at(t).texto.contains("'")){ 03776 int index=0; 03777 while(texto.contains("'")){ 03778 index = texto.indexOf("'", 0); 03779 texto.replace(index,1, "#apos"); 03780 } 03781 } 03782 if(this->a->GetPagina(i)->GetVectorTextos().at(t).cursiva){ 03783 cursiva="si"; 03784 }else{ 03785 cursiva="no"; 03786 } 03787 03788 if(this->a->GetPagina(i)->GetVectorTextos().at(t).negrita){ 03789 negrita="si"; 03790 }else{ 03791 negrita="no"; 03792 } 03793 03794 if(this->a->GetPagina(i)->GetVectorTextos().at(t).subrayado){ 03795 subrayado="si"; 03796 }else{ 03797 subrayado="no"; 03798 } 03799 texto6= texto6 + " <texto contenido=\"" + texto + "\" fuente=\"" + this->a->GetPagina(i)->GetVectorTextos().at(t).fuente.toString() + "\" negrita=\"" + negrita + "\" subrayado=\"" + subrayado + "\" cursiva=\"" + cursiva + "\" red=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.red()) + "\" green=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.green()) + "\" blue=\"" + QString::number(this->a->GetPagina(i)->GetVectorTextos().at(t).color.blue()) + "\"/>\n"; 03800 }catch(std::exception& e){ 03801 Error *err=new Error(1, e.what(), this); 03802 err->LanzarDialogo(); 03803 delete err; 03804 exit(1); 03805 } 03806 } 03807 texto6=texto6 + " </textos>\n"; 03808 } 03809 QString textoM2=""; 03810 for(int contadormarcos=0; contadormarcos<this->a->GetPagina(i)->getMarcos().size(); contadormarcos++){ 03811 QString texto=" <marco id=\""+ QString::number(this->a->GetPagina(i)->getMarcos().at(contadormarcos).idFoto) + "\" nombre=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).nombre->toStdString().c_str() + "\" tipo=\"" + this->a->GetPagina(i)->getMarcos().at(contadormarcos).tipo->toStdString().c_str() + "\"/>\n"; 03812 textoM2.append(texto); 03813 } 03814 if(this->a->GetPagina(i)->ContieneTextos()){ 03815 if(this->a->GetPagina(i)->ContieneMarcos()){ 03816 texto2=texto2 + texto4 + " </fotos>\n" + " <marcos>\n" + textoM2 + " </marcos>\n" + texto6; 03817 }else{ 03818 texto2=texto2 + texto4 + " </fotos>\n" + texto6; 03819 } 03820 }else{ 03821 if(this->a->GetPagina(i)->ContieneMarcos()){ 03822 texto2=texto2 + texto4 + " </fotos>\n" + " <marcos>\n" + textoM2 + " </marcos>\n"; 03823 }else{ 03824 texto2=texto2 + texto4 + " </fotos>\n"; 03825 } 03826 } 03827 03828 03829 texto2=texto2 + " </pagina>\n"; 03830 03831 03832 } 03833 contadNumPagina++; 03834 ii=i; 03835 } 03836 03837 } 03838 03839 for(int x=0; x<this->paginasDesplazadas.size(); x++){ 03840 try{ 03841 texto9=texto9 + this->paginasDesplazadas.at(x); 03842 }catch(std::exception& e){ 03843 Error *err=new Error(1, e.what(), this); 03844 err->LanzarDialogo(); 03845 delete err; 03846 exit(1); 03847 } 03848 } 03849 03850 if(this->creadasPaginas){ 03851 texto2= texto2 + " </paginas>\n" + " <DesplazamientosPaginas>\n" + texto9 + " </DesplazamientosPaginas>\n"; 03852 03853 textoFinal= texto + texto2; 03854 }else{ 03855 texto2= texto2 + " <Desplazamientos>\n" + texto9 + " </Desplazamientos>\n"; 03856 03857 textoFinal= texto + texto2; 03858 } 03859 textoFinal= textoFinal + "</album>\n"; 03860 textStream << textoFinal; 03861 file.close(); 03862 this->paginasDesplazadas.clear(); 03863 this->portadaDesplazada.clear(); 03864 03865 QString lineaConfig="<album nombre=\""; 03866 lineaConfig.append(this->rutaGuardado); 03867 lineaConfig.append("\"/>\n</creados_recientemente></general>"); 03868 QString directorio=this->directorioCasaUsuario; 03869 directorio.append("/.openAlbum/configuracion.xml"); 03870 QFile filename(directorio); 03871 if (filename.open(QIODevice::ReadOnly | QIODevice::Text)) 03872 { 03873 QFile filename2(directorio); 03874 if (filename2.open(QIODevice::ReadWrite)) 03875 { 03876 QTextStream in(&filename); 03877 QTextStream out(&filename2); 03878 bool aux=false; 03879 while(!aux) { 03880 QString linea=in.readLine(); 03881 if(linea=="</creados_recientemente></general>"){ 03882 aux=true; 03883 }else{ 03884 out << linea.append("\n"); 03885 } 03886 } 03887 out << lineaConfig; 03888 filename2.close(); 03889 } 03890 filename.close(); 03891 } 03892 03893 03894 barra->setValue(9+ii); 03895 } 03896 this->ui->statusBar->setMaximumWidth(wAux); 03897 barra->hide(); 03898 delete barra; 03899 } 03900 03901 void FormPrincipal::EliminarAlbum(QString album, bool activarPregunta){ 03902 QFileSystemModel *sistema=new QFileSystemModel(); 03903 if(album==""){ 03904 QFileDialog::Options options; 03905 QString selectedFilter="OPA: Open Album File (*.opa)"; 03906 QString fileName= QFileDialog::getOpenFileName(this, tr("Eliminar álbum"), this->directorioCasaUsuario, tr("OPA: Open Album File (*.opa)"), &selectedFilter, options); 03907 album=fileName; 03908 } 03909 if(!album.isNull()){ 03910 if(activarPregunta){ 03911 QMessageBox::StandardButton reply; 03912 QString mensaje="¿Está seguro de que desea eliminar el álbum \""; 03913 mensaje= mensaje + album.section("/", -1); 03914 if(mensaje.contains(".opa")){ 03915 03916 mensaje.remove(".opa"); 03917 } 03918 mensaje= mensaje + "\" del sistema definitivamente?"; 03919 reply = QMessageBox::question(this, tr("Advertencia"), tr(mensaje.toStdString().c_str()), QMessageBox::Yes | QMessageBox::No); 03920 if (reply == QMessageBox::Yes){ 03921 this->aceptadaEliminacion=true; 03922 Parser parser(album.toStdString(), this); 03923 ticpp::Element* element = parser.root(); 03924 ticpp::Element* portadaElement = parser.find("portada", element); 03925 ticpp::Element* imagenFrontalPortadaElement = parser.find("imagen_fro", portadaElement); 03926 ticpp::Element* imagenTraseraPortadaElement = parser.find("imagen_tra", portadaElement); 03927 ticpp::Element* paginasElement = parser.find("paginas", element); 03928 std::string hayPaginasString = parser.get_attribute("paginas", element); 03929 QString imagenFondoPortada= (parser.get_attribute("imagen_fondo", portadaElement)).c_str(); 03930 if(imagenFondoPortada!="no"){ 03931 sistema->remove(sistema->index(imagenFondoPortada)); 03932 } 03933 QString rutaFotoFrontalPortada= (parser.get_attribute("ruta", imagenFrontalPortadaElement)).c_str(); 03934 QString rutaFotoTraseraPortada= (parser.get_attribute("ruta", imagenTraseraPortadaElement)).c_str(); 03935 03936 if(rutaFotoFrontalPortada!="no"){ 03937 sistema->remove(sistema->index(rutaFotoFrontalPortada)); 03938 } 03939 if(rutaFotoTraseraPortada!="no"){ 03940 sistema->remove(sistema->index(rutaFotoTraseraPortada)); 03941 } 03942 03943 03944 std::vector<ticpp::Element*> vectorPaginas; 03945 try{ 03946 if(hayPaginasString=="si"){ 03947 parser.find("pagina", vectorPaginas, paginasElement); 03948 for(unsigned contador=0; contador<vectorPaginas.size(); contador++){ 03949 QString imagenFondoPagina = parser.get_attribute("imagen_fondo", vectorPaginas.at(contador)).c_str(); 03950 if(imagenFondoPagina!="no"){ 03951 sistema->remove(sistema->index(imagenFondoPagina)); 03952 } 03953 std::vector<ticpp::Element*> vectorFotosPagina; 03954 ticpp::Element* fotosPaginaElement = parser.find("fotos", vectorPaginas.at(contador)); 03955 parser.find("foto", vectorFotosPagina, fotosPaginaElement); 03956 for(unsigned contadorFotos=0; contadorFotos < vectorFotosPagina.size(); contadorFotos++){ 03957 QString rutaFotoPagina= QString::fromAscii(parser.get_attribute("ruta", vectorFotosPagina.at(contadorFotos)).c_str()); 03958 sistema->remove(sistema->index(rutaFotoPagina)); 03959 03960 } 03961 } 03962 } 03963 }catch(std::exception& e){ 03964 Error *err=new Error(1, e.what(), this); 03965 err->LanzarDialogo(); 03966 delete err; 03967 exit(1); 03968 } 03969 sistema->remove(sistema->index(album)); 03970 }else{ 03971 this->aceptadaEliminacion=false; 03972 } 03973 }else{ 03974 this->aceptadaEliminacion=true; 03975 Parser parser(album.toStdString(), this); 03976 ticpp::Element* element = parser.root(); 03977 ticpp::Element* portadaElement = parser.find("portada", element); 03978 ticpp::Element* imagenFrontalPortadaElement = parser.find("imagen_fro", portadaElement); 03979 ticpp::Element* imagenTraseraPortadaElement = parser.find("imagen_tra", portadaElement); 03980 ticpp::Element* paginasElement = parser.find("paginas", element); 03981 std::string hayPaginasString = parser.get_attribute("paginas", element); 03982 QString imagenFondoPortada= (parser.get_attribute("imagen_fondo", portadaElement)).c_str(); 03983 if(imagenFondoPortada!="no"){ 03984 sistema->remove(sistema->index(imagenFondoPortada)); 03985 } 03986 QString rutaFotoFrontalPortada= (parser.get_attribute("ruta", imagenFrontalPortadaElement)).c_str(); 03987 QString rutaFotoTraseraPortada= (parser.get_attribute("ruta", imagenTraseraPortadaElement)).c_str(); 03988 03989 if(rutaFotoFrontalPortada!="no"){ 03990 sistema->remove(sistema->index(rutaFotoFrontalPortada)); 03991 } 03992 if(rutaFotoTraseraPortada!="no"){ 03993 sistema->remove(sistema->index(rutaFotoTraseraPortada)); 03994 } 03995 03996 03997 std::vector<ticpp::Element*> vectorPaginas; 03998 try{ 03999 if(hayPaginasString=="si"){ 04000 parser.find("pagina", vectorPaginas, paginasElement); 04001 for(unsigned contador=0; contador<vectorPaginas.size(); contador++){ 04002 QString imagenFondoPagina = parser.get_attribute("imagen_fondo", vectorPaginas.at(contador)).c_str(); 04003 if(imagenFondoPagina!="no"){ 04004 sistema->remove(sistema->index(imagenFondoPagina)); 04005 } 04006 std::vector<ticpp::Element*> vectorFotosPagina; 04007 ticpp::Element* fotosPaginaElement = parser.find("fotos", vectorPaginas.at(contador)); 04008 parser.find("foto", vectorFotosPagina, fotosPaginaElement); 04009 for(unsigned contadorFotos=0; contadorFotos < vectorFotosPagina.size(); contadorFotos++){ 04010 QString rutaFotoPagina= QString::fromAscii(parser.get_attribute("ruta", vectorFotosPagina.at(contadorFotos)).c_str()); 04011 sistema->remove(sistema->index(rutaFotoPagina)); 04012 04013 } 04014 } 04015 } 04016 }catch(std::exception& e){ 04017 Error *err=new Error(1, e.what(), this); 04018 err->LanzarDialogo(); 04019 delete err; 04020 exit(1); 04021 } 04022 sistema->remove(sistema->index(album)); 04023 } 04024 } 04025 delete sistema; 04026 } 04027 04028 void FormPrincipal::Eliminar(){ 04029 if(this->creadaPortada){ 04030 if(this->ActivadoGuardado){ 04031 QMessageBox::StandardButton reply; 04032 QString mensaje=tr("¿Está seguro de que desea eliminar el álbum actual?"); 04033 reply = QMessageBox::question(this, tr("Advertencia"), mensaje, QMessageBox::Yes | QMessageBox::No); 04034 if (reply == QMessageBox::Yes){ 04035 this->preguntaSeguridad=false; 04036 this->EliminarAlbum(this->rutaGuardado, true); 04037 if(this->aceptadaEliminacion){ 04038 this->NuevoAlbum(); 04039 } 04040 }else{ 04041 this->EliminarAlbum("", true); 04042 } 04043 04044 04045 }else{ 04046 this->EliminarAlbum("", true); 04047 } 04048 }else{ 04049 this->EliminarAlbum("", true); 04050 } 04051 } 04052 04053 void FormPrincipal::activarCreadoconAsistente(){ 04054 this->creadoConAsistente=true; 04055 } 04056 04057 04058 bool FormPrincipal::getOrdenacionAlfabetica(){ 04059 return this->ordenAlfabetico; 04060 } 04061 04062 bool FormPrincipal::getOrdenacionFechaCreciente(){ 04063 return this->ordenFechaCreciente; 04064 } 04065 04066 bool FormPrincipal::getOrdenacionFechaDecreciente(){ 04067 return this->ordenFechaDecreciente; 04068 } 04069 04070 bool FormPrincipal::getOrdenacionPersonalizada(){ 04071 return this->ordenPersonalizado; 04072 } 04073 04074 void FormPrincipal::NuevoAlbum(bool pregunta){ 04075 04076 04077 this->elegidoFondoPortada=false; 04078 this->elegidaFrontalPortada=false; 04079 this->elegidaTraseraPortada=false; 04080 this->elegidaPlantilla=false; 04081 this->elegidoTexto=false; 04082 // Mostrar formulario 04083 bool generarNuevoAlbum=false; 04084 if(this->preguntaSeguridad && pregunta && !this->nadacreado){ 04085 QMessageBox::StandardButton reply; 04086 reply = QMessageBox::question(this, tr("Advertencia"), tr("¿Desea guardar los cambios efectuados en el album actual?"), QMessageBox::Yes | QMessageBox::No); 04087 if (reply == QMessageBox::Yes){ 04088 generarNuevoAlbum=true; 04089 this->Guardar(); 04090 04091 }else if (reply == QMessageBox::No){ 04092 generarNuevoAlbum=true; 04093 }else{ 04094 generarNuevoAlbum=false; 04095 } 04096 }else{ 04097 generarNuevoAlbum=true; 04098 } 04099 this->inicializarDespl=true; 04100 this->paginasPersonalizadas=false; 04101 this->paginasAleatorias=false; 04102 this->paginasFijas=false; 04103 04104 04105 ordenAlfabetico=false; 04106 ordenFechaCreciente=false; 04107 ordenFechaDecreciente=false; 04108 ordenPersonalizado=false; 04109 this->creadasPaginas=false; 04110 this->creadoConAsistente=false; 04111 this->seleccionadaTextura=false; 04112 this->mostrandosePaginaActualmente=false; 04113 this->ui->action_Propiedades->setDisabled(true); 04114 this->ui->actionPropiedadesBoton->setDisabled(true); 04115 this->rutaGuardado.clear(); 04116 if(this->ejecutadoWizard){ 04117 04118 this->ejecutadoWizard=false; 04119 for(int t=0; t < this->wizard->pageIds().size(); t++){ 04120 delete this->wizard->page(this->wizard->pageIds().at(t)); 04121 } 04122 delete this->wizard; 04123 } 04124 this->ui->action_Lanzar_asistente->setEnabled(true); 04125 this->ui->actionWizardBoton->setEnabled(true); 04126 this->ActivadoGuardado=false; 04127 04128 this->seHaCargado=false; 04129 if(generarNuevoAlbum){ 04130 if(this->creadasPaginas){ 04131 this->paginasDesplazadas.clear(); 04132 this->posicionesItemsPaginas.clear(); 04133 try{ 04134 for(unsigned eliminador=0; eliminador < this->a->paginas.size(); eliminador++){ 04135 if(!this->edicionPaginaFinalX.isEmpty()){ 04136 this->edicionPaginaFinalX[eliminador].clear(); 04137 this->edicionPaginaFinalY[eliminador].clear(); 04138 } 04139 if(!this->desplazamientoPaginaFinalX.isEmpty()){ 04140 this->desplazamientoPaginaFinalX[eliminador].clear(); 04141 this->desplazamientoPaginaFinalY[eliminador].clear(); 04142 } 04143 04144 04145 } 04146 }catch(std::exception& e){ 04147 Error *err=new Error(1, e.what(), this); 04148 err->LanzarDialogo(); 04149 delete err; 04150 exit(1); 04151 } 04152 } 04153 if(this->creadaPortada){ 04154 04155 this->creadaPortada=false; 04156 04157 delete this->a; 04158 } 04159 ui->pushButtonEditar->hide(); 04160 ui->pushButtonTerminar->hide(); 04161 ui->pushPagSiguiente->setDisabled(true); 04162 ui->action_Avanzar_P_gina->setDisabled(true); 04163 ui->actionAvanzarBoton->setDisabled(true); 04164 ui->pushPagAnterior->setDisabled(true); 04165 ui->action_Retroceder_p_gina->setDisabled(true); 04166 ui->actionRetrocederBoton->setDisabled(true); 04167 ui->pushButtonEditarPagina->setDisabled(true); 04168 ui->actionEditar->setDisabled(true); 04169 ui->actionEditarBoton->setDisabled(true); 04170 ui->pushButtonEditarPagina->show(); 04171 ui->pushButtonTerminarPagina->setDisabled(true); 04172 ui->pushButtonTerminarPagina->show(); 04173 IndicePaginas=0; 04174 dimensionWpagina=0; 04175 dimensionHpagina=0; 04176 04177 ui->selectFoto1->setDisabled(true); 04178 ui->selectFoto2->setDisabled(true); 04179 ui->botonPrueba->setDisabled(true); 04180 ui->botonTexto->setDisabled(true); 04181 ui->pushButtonFondoPortada->setDisabled(true); 04182 ui->pushCrearPaginas->setDisabled(true); 04183 ui->pushOpen->setDisabled(true); 04184 ui->actionAnnadirBoton->setDisabled(true); 04185 ui->actionA_adir_im_genes->setDisabled(true); 04186 ui->pushRemoveSelect->setDisabled(true); 04187 this->ui->actionBorrar_selecci_n->setDisabled(true); 04188 this->ui->actionEliminarFotosBoton->setDisabled(true); 04189 ui->pushCheckAll->setDisabled(true); 04190 ui->actionSeleccionarTodoBoton->setDisabled(true); 04191 ui->actionSeleccionar_todo->setDisabled(true); 04192 ui->pushUncheckAll->setDisabled(true); 04193 ui->actionDeseleccionarTodoBoton->setDisabled(true); 04194 this->ui->actionDeseleccionar_todo->setDisabled(true); 04195 ui->activatedPlantilla->setEnabled(true); 04196 ui->selectorPlantilla->clear(); 04197 ui->treeWidget->clear(); 04198 ui->treeWidget->setEnabled(true); 04199 if(this->activadoVisualizadorPrincipal){ 04200 04201 04202 this->activadoVisualizadorPrincipal=false; 04203 04204 } 04205 04206 04207 if(this->ActivadoVisorImagenes){ 04208 ui->imagePreview->scene()->clear(); 04209 this->ActivadoVisorImagenes=false; 04210 } 04211 04212 ui->actionG_uardar_como->setDisabled(true); 04213 ui->actionGuardarComoBoton->setDisabled(true); 04214 ui->action_Guardar->setDisabled(true); 04215 ui->actionGuardarBoton->setDisabled(true); 04216 04217 04218 04219 04220 try{ 04221 this->a=new Album(this); 04222 }catch(std::exception& e){ 04223 Error *err=new Error(1, e.what(), this); 04224 err->LanzarDialogo(); 04225 delete err; 04226 exit(1); 04227 } 04228 for(unsigned eliminador=0; eliminador < this->miniaturas.size(); eliminador++){ 04229 delete this->miniaturas.at(eliminador); 04230 } 04231 this->miniaturas.clear(); 04232 this->iAList.clear(); 04233 this->readableFiltersString.clear(); 04234 ui->action_Nuevo->setDisabled(true); 04235 ui->actionNuevoBoton->setDisabled(true); 04236 ui->actionE_xportar->setDisabled(true); 04237 ui->actionExportarJPGBoton->setDisabled(true); 04238 ui->actionExportarPDFBoton->setDisabled(true); 04239 ui->actionI_mprimir->setDisabled(true); 04240 ui->actionImprimirBoton->setDisabled(true); 04241 } 04242 this->DesactivarParteEdicion=false; 04243 this->DesactivarParteEdicionPortada=false; 04244 this->paginasDesplazadas.clear(); 04245 this->portadaDesplazada.clear(); 04246 this->portadaDesplazada=""; 04247 this->posicionesItemsPortada.clear(); 04248 this->posXFotoDesplazada.clear(); 04249 this->posXFotoDesplazadaPortada.clear(); 04250 this->posXTextoDesplazado.clear(); 04251 this->posXTextoDesplazadoPortada.clear(); 04252 this->posYFotoDesplazada.clear(); 04253 this->posYFotoDesplazadaPortada.clear(); 04254 this->posYTextoDesplazado.clear(); 04255 this->posYTextoDesplazadoPortada.clear(); 04256 ui->actionTama_o->setDisabled(true); 04257 ui->actionEditarTamBoton->setDisabled(true); 04258 this->preguntaSeguridad=false; 04259 04260 QString path=this->directoriodetrabajo.absolutePath() + "/data/templatePredef.png"; 04261 QPixmap *pix=new QPixmap(path); 04262 QGraphicsScene *scena=new QGraphicsScene(); 04263 04264 ui->plantillaPreview->setScene(scena); 04265 scena->addPixmap(pix->scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04266 delete pix; 04267 04268 QGraphicsScene *escenaP; 04269 QImage *imgP; 04270 try{ 04271 escenaP = new QGraphicsScene(); 04272 this->ui->imagePreview->setScene(escenaP); 04273 imgP = new QImage(); 04274 }catch(std::exception& e){ 04275 Error *err=new Error(2, e.what(), this); 04276 err->LanzarDialogo(); 04277 delete err; 04278 exit(1); 04279 } 04280 try{ 04281 imgP->load(this->directoriodetrabajo.absolutePath() + "/data/imagePrev.png"); 04282 if(imgP->isNull()){ 04283 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 04284 } 04285 }catch(std::exception& e){ 04286 Error *err=new Error(4, e.what(), this); 04287 err->LanzarDialogo(); 04288 delete err; 04289 exit(1); 04290 } 04291 04292 QPixmap imageP=QPixmap::fromImage(*imgP); 04293 this->nadacreado=true; 04294 this->ui->imagePreview->scene()->addPixmap(imageP.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04295 this->ui->imagePreview->setStyleSheet("background: transparent; border: none"); 04296 delete imgP; 04297 } 04298 04299 bool FormPrincipal::seleccionadaPlantilla(){ 04300 return this->elegidaPlantilla; 04301 } 04302 04303 void FormPrincipal::Imprimir(){ 04304 04305 QSizeF tam(a->portada->GetW(), a->portada->GetH()); 04306 QString mensaje= "Para poder imprimir el álbum en el tamaño definido "; 04307 if(a->portada->GetW()==1687){ 04308 mensaje=mensaje+"(22 x 31 mm)"; 04309 } 04310 if(a->portada->GetW()==1207){ 04311 mensaje=mensaje+"(16 x 22 mm)"; 04312 } 04313 if(a->portada->GetW()==2229){ 04314 mensaje=mensaje+"(29 x 41 mm)"; 04315 } 04316 mensaje=mensaje+ ", procure que su impresora sea apta y esté configurada para ello."; 04317 QMessageBox::information(this, tr("Advertencia"), tr(mensaje.toStdString().c_str()), QMessageBox::Accepted); 04318 04319 QPrintDialog *impresora; 04320 try{ 04321 impresora= new QPrintDialog(); 04322 }catch(std::exception& e){ 04323 Error *err=new Error(2, e.what(), this); 04324 err->LanzarDialogo(); 04325 delete err; 04326 exit(1); 04327 } 04328 impresora->exec(); 04329 if(impresora->result()==1){ 04330 04331 impresora->printer()->setPageMargins(0, 0, 0, 0, QPrinter::DevicePixel); 04332 if(this->creadasPaginas){ 04333 impresora->printer()->setFromTo(0,a->paginas.size()+1); 04334 }else{ 04335 impresora->printer()->setFromTo(0,0); 04336 } 04337 QPainter painter(impresora->printer()); 04338 QGraphicsScene *escenaFinal; 04339 try{ 04340 escenaFinal= new QGraphicsScene(); 04341 }catch(std::exception& e){ 04342 Error *err=new Error(2, e.what(), this); 04343 err->LanzarDialogo(); 04344 delete err; 04345 exit(1); 04346 } 04347 a->portada->versionFinal->setScene(escenaFinal); 04348 a->portada->versionFinal->setSceneRect(0,0,a->portada->GetW(), a->portada->GetH()); 04349 04350 if(a->portada->ColordeFondo()){ 04351 //Establecemos de fondo un color. 04352 if(!this->a->portada->activadaMascara()){ 04353 QBrush *wallFinal= new QBrush(a->portada->FondoClr()); 04354 a->portada->versionFinal->scene()->setBackgroundBrush(*wallFinal); 04355 delete wallFinal; 04356 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 04357 a->portada->versionFinal->scene()->addLine(0, 0, a->portada->GetW(), 0); 04358 04359 }else{ 04360 04361 if(a->portada->GetW()>2000){ 04362 a->portada->versionFinal->scene()->addLine(0, 0, a->portada->GetW(), 0); 04363 04364 04365 }else{ 04366 04367 a->portada->versionFinal->scene()->addLine(0,0,a->portada->GetW(),0); 04368 04369 04370 } 04371 04372 } 04373 } 04374 }else{ 04375 if(!this->a->portada->activadaMascara()){ 04376 //Establecemos de fondo una imagen, escalaremos todo al final 04377 QPixmap *gfinal; 04378 try{ 04379 gfinal=new QPixmap(a->portada->FondoImg()); 04380 if(gfinal->isNull()){ 04381 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 04382 } 04383 }catch(std::exception& e){ 04384 Error *err=new Error(4, e.what(), this); 04385 err->LanzarDialogo(); 04386 delete err; 04387 exit(1); 04388 } 04389 04390 QGraphicsPixmapItem *itemfinal=new QGraphicsPixmapItem(gfinal->scaled(a->portada->GetW(), a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04391 itemfinal->setPos(0, 0); 04392 a->portada->versionFinal->scene()->addItem(itemfinal); 04393 delete gfinal; 04394 } 04395 } 04396 if(this->a->portada->hayImagenTrasera()){ 04397 // Imagen Trasera 04398 QPixmap *hfinal; 04399 try{ 04400 hfinal=new QPixmap(a->portada->RutaFotoTrasera()); 04401 if(hfinal->isNull()){ 04402 throw std::ios_base::failure(tr("No pudo abrirse la imagen trasera de la portada.").toStdString()); 04403 } 04404 }catch(std::exception& e){ 04405 Error *err=new Error(4, e.what(), this); 04406 err->LanzarDialogo(); 04407 delete err; 04408 exit(1); 04409 } 04410 04411 QGraphicsPixmapItem *item2final; 04412 04413 04414 if(hfinal->width() > hfinal->height()){ 04415 if(a->portada->getImagenPosVertical("trasera")){ 04416 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionHImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionWImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04417 item2final->setPos(((((a->portada->PosicionXImagenTrasera()+a->portada->DimensionWImagenTrasera())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04418 04419 item2final->setRotation(90); 04420 item2final->setAcceptTouchEvents(true); 04421 }else{ 04422 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionWImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionHImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04423 item2final->setPos((((a->portada->PosicionXImagenTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04424 04425 } 04426 }else{ 04427 if(!a->portada->getImagenPosVertical("trasera")){ 04428 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionHImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionWImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04429 item2final->setPos(((((a->portada->PosicionXImagenTrasera()+a->portada->DimensionWImagenTrasera())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04430 04431 item2final->setRotation(90); 04432 item2final->setAcceptTouchEvents(true); 04433 }else{ 04434 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionWImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionHImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04435 item2final->setPos((((a->portada->PosicionXImagenTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04436 04437 04438 } 04439 04440 } 04441 if(!this->a->portada->activadaMascara()){ 04442 04443 item2final->setAcceptHoverEvents(true); 04444 } 04445 a->portada->versionFinal->scene()->addItem(item2final); 04446 delete hfinal; 04447 } 04448 04449 if(this->a->portada->hayImagenFrontal()){ 04450 // Imagen Frontal 04451 QPixmap *ifinal; 04452 try{ 04453 ifinal=new QPixmap(a->portada->RutaFotoFrontal()); 04454 if(ifinal->isNull()){ 04455 throw std::ios_base::failure(tr("No pudo abrirse la imagen frontal de la portada.").toStdString()); 04456 } 04457 }catch(std::exception& e){ 04458 Error *err=new Error(4, e.what(), this); 04459 err->LanzarDialogo(); 04460 delete err; 04461 exit(1); 04462 } 04463 QGraphicsPixmapItem *item3final; 04464 04465 if(ifinal->width() > ifinal->height()){ 04466 if(a->portada->getImagenPosVertical("frontal")){ 04467 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionHImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionWImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04468 item3final->setPos(((((a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04469 04470 item3final->setRotation(90); 04471 item3final->setAcceptTouchEvents(true); 04472 }else{ 04473 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionWImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionHImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04474 item3final->setPos((((a->portada->PosicionXImagenFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04475 04476 } 04477 }else{ 04478 if(!a->portada->getImagenPosVertical("frontal")){ 04479 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionHImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionWImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04480 item3final->setPos(((((a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04481 04482 item3final->setRotation(90); 04483 item3final->setAcceptTouchEvents(true); 04484 }else{ 04485 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionWImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionHImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04486 item3final->setPos((((a->portada->PosicionXImagenFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04487 04488 04489 } 04490 04491 } 04492 if(!this->a->portada->activadaMascara()){ 04493 04494 item3final->setAcceptHoverEvents(true); 04495 } 04496 a->portada->versionFinal->scene()->addItem(item3final); 04497 delete ifinal; 04498 } 04499 04500 if(this->a->portada->activadaMascara() && this->a->portada->ColordeFondo()){ 04501 04502 04503 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 04504 QImage *img=new QImage(path); 04505 QRgb color=this->a->portada->FondoClr().rgb(); 04506 for(int a=0; a < img->width(); a++){ 04507 for(int b=0; b < img->height(); b++){ 04508 if(img->pixel(a,b)!=0){ 04509 img->setPixel(a,b,color); 04510 } 04511 } 04512 } 04513 QPixmap *g=new QPixmap(); 04514 g->convertFromImage(*img, Qt::AutoColor); 04515 04516 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->a->portada->GetW(), this->a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04517 item->setPos(0, 0); 04518 item->setAcceptHoverEvents(false); 04519 this->a->portada->versionFinal->scene()->addItem(item); 04520 delete img; 04521 delete g; 04522 } 04523 04524 if(this->a->portada->activadaMascara() && !this->a->portada->ColordeFondo()){ 04525 04526 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 04527 QImage *mascara=new QImage(path); 04528 QImage *imgFondo=new QImage(this->a->portada->FondoImg()); 04529 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 04530 04531 for(int a=0; a < imgFinal.width(); a++){ 04532 for(int b=0; b < imgFinal.height(); b++){ 04533 if(imgFinal.pixel(a,b)!=0){ 04534 imgFinal.setPixel(a,b,imgFondo->pixel(a,b)); 04535 } 04536 } 04537 } 04538 QPixmap *g=new QPixmap(); 04539 04540 g->convertFromImage(imgFinal, Qt::AutoColor); 04541 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->a->portada->GetW(), this->a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04542 item->setPos(0, 0); 04543 item->setAcceptHoverEvents(false); 04544 this->a->portada->versionFinal->scene()->addItem(item); 04545 delete mascara; 04546 delete imgFondo; 04547 delete g; 04548 } 04549 04550 04551 if(this->a->portada->hayTextoFrontal()){ 04552 // Texto Frontal 04553 QGraphicsTextItem *TFFinal=new QGraphicsTextItem(a->portada->TextoFrontal()); 04554 QFont *fuenteFFinal=new QFont(a->portada->FuenteTextoFrontal().family(),((a->portada->TamTextoFrontal()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoFrontal()); 04555 if(a->portada->NegritaTextoFrontal()){ 04556 fuenteFFinal->setBold(true); 04557 } 04558 if(a->portada->SubrayadoTextoFrontal()){ 04559 fuenteFFinal->setUnderline(true); 04560 } 04561 04562 TFFinal->setDefaultTextColor(a->portada->ColorTextoFrontal()); 04563 TFFinal->setFont(*fuenteFFinal); 04564 04565 TFFinal->setTextWidth(((a->portada->WTextoFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 04566 if(a->portada->VerticalTextoFrontal()){ 04567 TFFinal->setRotation(90); 04568 } 04569 04570 TFFinal->setPos((((a->portada->PosXTextoFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04571 if(a->portada->CentradoTextoFrontal()){ 04572 // Para centrar el texto 04573 QTextCursor cursorFronFin = TFFinal->textCursor(); 04574 QTextBlockFormat bfmtFronFin = cursorFronFin.blockFormat(); 04575 bfmtFronFin.setAlignment(Qt::AlignCenter); 04576 cursorFronFin.setBlockFormat(bfmtFronFin); 04577 TFFinal->setTextCursor(cursorFronFin); 04578 } 04579 04580 a->portada->versionFinal->scene()->addItem(TFFinal); 04581 delete fuenteFFinal; 04582 } 04583 04584 if(this->a->portada->hayTextoTrasero()){ 04585 // Texto Trasero 04586 QGraphicsTextItem *TTFinal=new QGraphicsTextItem(a->portada->TextoTrasera()); 04587 QFont *fuenteTFinal=new QFont(a->portada->FuenteTextoTrasera().family(),((a->portada->TamTextoTrasera()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoTrasera()); 04588 if(a->portada->NegritaTextoTrasera()){ 04589 fuenteTFinal->setBold(true); 04590 } 04591 if(a->portada->SubrayadoTextoTrasera()){ 04592 fuenteTFinal->setUnderline(true); 04593 } 04594 TTFinal->setFont(*fuenteTFinal); 04595 TTFinal->setTextWidth(((a->portada->WTextoTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 04596 if(a->portada->VerticalTextoTrasera()){ 04597 TTFinal->setRotation(90); 04598 } 04599 TTFinal->setPos((((a->portada->PosXTextoTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04600 TTFinal->setDefaultTextColor(a->portada->ColorTextoTrasera()); 04601 if(a->portada->CentradoTextoTrasera()){ 04602 // Para centrar el texto 04603 QTextCursor cursorTTrasFin = TTFinal->textCursor(); 04604 QTextBlockFormat bfmtTTrasFin = cursorTTrasFin.blockFormat(); 04605 bfmtTTrasFin.setAlignment(Qt::AlignCenter); 04606 cursorTTrasFin.setBlockFormat(bfmtTTrasFin); 04607 TTFinal->setTextCursor(cursorTTrasFin); 04608 } 04609 04610 04611 a->portada->versionFinal->scene()->addItem(TTFinal); 04612 delete fuenteTFinal; 04613 } 04614 // Dimensiones PDF W: 5402.45 H: 3730.8 04615 if(this->ui->actionLineaSeparacionPortada->isChecked()){ 04616 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 04617 //Tamaño clásico 04618 a->portada->versionFinal->scene()->addLine((a->portada->GetW()*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 04619 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 04620 }else{ 04621 if(a->portada->GetW()>2000){ 04622 //Tamaño Maxi 04623 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 04624 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 04625 04626 }else{ 04627 //Tamaño Mini 04628 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 04629 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 04630 04631 } 04632 04633 } 04634 }else{ 04635 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 04636 //Tamaño clásico 04637 a->portada->versionFinal->scene()->addLine((a->portada->GetW()), 2, ((a->portada->GetW())), a->portada->GetH()); 04638 a->portada->versionFinal->scene()->addLine((a->portada->GetW()), 2, ((a->portada->GetW())), a->portada->GetH()); 04639 04640 }else{ 04641 if(a->portada->GetW()>2000){ 04642 04643 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 04644 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 04645 04646 }else{ 04647 //Tamaño Mini 04648 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 04649 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 04650 04651 } 04652 04653 } 04654 } 04655 if(this->a->portada->hayTextoLateral()){ 04656 // Texto Lateral 04657 QGraphicsTextItem *TLFinal=new QGraphicsTextItem(a->portada->TextoLateral()); 04658 QFont *fuenteLFinal=new QFont(a->portada->FuenteTextoLateral().family(), ((a->portada->TamTextoLateral()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoLateral()); 04659 if(a->portada->NegritaTextoLateral()){ 04660 fuenteLFinal->setBold(true); 04661 } 04662 04663 if(a->portada->SubrayadoTextoLateral()){ 04664 fuenteLFinal->setUnderline(true); 04665 } 04666 TLFinal->setFont(*fuenteLFinal); 04667 04668 if(a->portada->VerticalTextoLateral()){ 04669 TLFinal->setRotation(90); 04670 04671 } 04672 TLFinal->setPos((((a->portada->PosXTextoLateral()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoLateral()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04673 TLFinal->setDefaultTextColor(a->portada->ColorTextoLateral()); 04674 if(a->portada->CentradoTextoLateral()){ 04675 // Para centrar el texto 04676 QTextCursor cursorLLatFin = TLFinal->textCursor(); 04677 QTextBlockFormat bfmtLLatFin = cursorLLatFin.blockFormat(); 04678 bfmtLLatFin.setAlignment(Qt::AlignCenter); 04679 cursorLLatFin.setBlockFormat(bfmtLLatFin); 04680 TLFinal->setTextCursor(cursorLLatFin); 04681 } 04682 04683 04684 a->portada->versionFinal->scene()->addItem(TLFinal); 04685 delete fuenteLFinal; 04686 } 04687 unsigned iItem, itexto; 04688 iItem=0; 04689 itexto=0; 04690 try{ 04691 if(!this->posicionesItemsPortada.isEmpty()){ 04692 for(int d=0; d < this->a->portada->getObjetosPortada().size(); d++){ 04693 float x, y, posx, posy; 04694 if(this->a->portada->getObjetosPortada().at(d)->acceptHoverEvents()){ 04695 posx=this->posicionesItemsPortada[iItem].x; 04696 posy=this->posicionesItemsPortada[iItem].y; 04697 x=((posx*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())); 04698 y=((posy*(a->portada->GetH()))/(this->controlador->getHVisorAlbum())); 04699 a->portada->versionFinal->items().at(d)->setPos(x,y); 04700 iItem++; 04701 } 04702 04703 } 04704 } 04705 }catch(std::exception& e){ 04706 Error *err=new Error(1, e.what(), this); 04707 err->LanzarDialogo(); 04708 delete err; 04709 exit(1); 04710 } 04711 04712 04713 04714 a->portada->versionFinal->scene()->render(&painter); 04715 04716 04717 if(this->creadasPaginas){ 04718 04719 QProgressBar *barra= new QProgressBar(this); 04720 int wAux=this->ui->statusBar->width(); 04721 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 04722 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 04723 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 04724 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 04725 04726 04727 04728 barra->setRange(0, a->paginas.size()+1); 04729 barra->show(); 04730 try{ 04731 for(unsigned contador=0; contador < a->paginas.size(); contador++){ 04732 barra->setValue(contador); 04733 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 04734 a->paginas[contador]->versionReducida->scene()->removeItem(a->paginas[contador]->versionReducida->scene()->itemAt(231*(this->controlador->getWVisorAlbum())/462, 2)); 04735 } 04736 04737 impresora->printer()->newPage(); 04738 painter.begin(impresora->printer()); 04739 04740 04741 04742 this->a->paginas[contador]->versionFinal->setSceneRect(0,0, this->dimensionWpagina, this->dimensionHpagina); 04743 QGraphicsScene *escenaFinal; 04744 try{ 04745 escenaFinal= new QGraphicsScene(); 04746 }catch(std::exception& e){ 04747 Error *err=new Error(2, e.what(), this); 04748 err->LanzarDialogo(); 04749 delete err; 04750 exit(1); 04751 } 04752 this->a->paginas[contador]->versionFinal->setScene(escenaFinal); 04753 bool avisador=false; 04754 if(this->a->paginas[contador]->ColordeFondo() && !this->a->paginas[contador]->activadaMascara()){ 04755 QBrush *wallFinal= new QBrush(this->a->paginas[contador]->GetFondoColor()); 04756 this->a->paginas[contador]->versionFinal->scene()->setBackgroundBrush(*wallFinal); 04757 if(this->dimensionWpagina>1711 && this->dimensionWpagina<2000){ 04758 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 04759 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 04760 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), (this->dimensionHpagina), *pen); 04761 }else{ 04762 04763 if(this->dimensionWpagina>2000){ 04764 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 04765 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 04766 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), ((this->dimensionHpagina)), *pen); 04767 }else{ 04768 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 04769 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 04770 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), ((this->dimensionHpagina)), *pen); 04771 } 04772 04773 } 04774 delete wallFinal; 04775 }else{ 04776 if(!this->a->paginas[contador]->activadaMascara()){ 04777 avisador=true; 04778 QPixmap *gfinal; 04779 try{ 04780 gfinal=new QPixmap(this->a->paginas[contador]->GetFondoImagen()); 04781 if(gfinal->isNull()){ 04782 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de una de las páginas.").toStdString()); 04783 } 04784 }catch(std::exception& e){ 04785 Error *err=new Error(4, e.what(), this); 04786 err->LanzarDialogo(); 04787 delete err; 04788 exit(1); 04789 } 04790 QGraphicsPixmapItem *itemfinal=new QGraphicsPixmapItem(gfinal->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04791 itemfinal->setPos(0, 0); 04792 this->a->paginas[contador]->versionFinal->scene()->addItem(itemfinal); 04793 delete gfinal; 04794 } 04795 } 04796 04797 04798 04799 04800 for(unsigned contador2=0; contador2 < this->a->paginas[contador]->GetVectorImagenes().size(); contador2++){ 04801 QPixmap *hfinal; 04802 try{ 04803 hfinal=new QPixmap(this->a->paginas[contador]->GetVectorImagenes().at(contador2).ruta); 04804 if(hfinal->isNull()){ 04805 throw std::ios_base::failure(tr("No pudo abrirse una de las imagenes de una de las páginas.").toStdString()); 04806 } 04807 }catch(std::exception& e){ 04808 Error *err=new Error(4, e.what(), this); 04809 err->LanzarDialogo(); 04810 delete err; 04811 exit(1); 04812 } 04813 QGraphicsPixmapItem *item2final; 04814 if(hfinal->width() > hfinal->height()){ 04815 if(this->a->paginas[contador]->getImagenPosVertical(contador2)){ 04816 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04817 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x + this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 04818 item2final->setRotation(90); 04819 item2final->setAcceptTouchEvents(true); 04820 }else{ 04821 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04822 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 04823 04824 } 04825 }else{ 04826 if(!this->a->paginas[contador]->getImagenPosVertical(contador2)){ 04827 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04828 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x + this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 04829 item2final->setRotation(90); 04830 item2final->setAcceptTouchEvents(true); 04831 }else{ 04832 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04833 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 04834 04835 } 04836 04837 } 04838 if(!this->a->GetPagina(contador)->activadaMascara()){ 04839 04840 item2final->setAcceptHoverEvents(true); 04841 } 04842 this->a->paginas[contador]->versionFinal->scene()->addItem(item2final); 04843 delete hfinal; 04844 } 04845 //Imágenes ya cargadas 04846 04847 04848 if(this->a->GetPagina(contador)->activadaMascara() && this->a->GetPagina(contador)->ColordeFondo()){ 04849 04850 04851 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(contador)->getMascara(); 04852 QImage *img=new QImage(path); 04853 QRgb color=this->a->GetPagina(contador)->GetFondoColor().rgb(); 04854 for(int ap=0; ap < img->width(); ap++){ 04855 for(int b=0; b < img->height(); b++){ 04856 if(img->pixel(ap,b)!=0){ 04857 img->setPixel(ap,b,color); 04858 } 04859 } 04860 } 04861 QPixmap *g=new QPixmap(); 04862 g->convertFromImage(*img, Qt::AutoColor); 04863 04864 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04865 item->setPos(0, 0); 04866 item->setAcceptHoverEvents(false); 04867 this->a->paginas[contador]->versionFinal->scene()->addItem(item); 04868 delete img; 04869 delete g; 04870 } 04871 04872 if(this->a->GetPagina(contador)->activadaMascara() && !this->a->GetPagina(contador)->ColordeFondo()){ 04873 04874 04875 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(contador)->getMascara(); 04876 QImage *mascara=new QImage(path); 04877 QImage *imgFondo=new QImage(this->a->GetPagina(contador)->GetFondoImagen()); 04878 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 04879 04880 for(int z=0; z < imgFinal.width(); z++){ 04881 for(int b=0; b < imgFinal.height(); b++){ 04882 if(imgFinal.pixel(z,b)!=0){ 04883 imgFinal.setPixel(z,b,imgFondo->pixel(z,b)); 04884 } 04885 } 04886 } 04887 QPixmap *g=new QPixmap(); 04888 04889 g->convertFromImage(imgFinal, Qt::AutoColor); 04890 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04891 item->setPos(0, 0); 04892 item->setAcceptHoverEvents(false); 04893 a->paginas[contador]->versionFinal->scene()->addItem(item); 04894 delete mascara; 04895 delete imgFondo; 04896 delete g; 04897 } 04898 04899 04900 04901 if(this->a->paginas[contador]->GetNumTextos()!=0){ 04902 for(unsigned contador3=0; contador3 < this->a->paginas[contador]->GetVectorTextos().size(); contador3++){ 04903 ATexto txt=this->a->paginas[contador]->GetVectorTextos().at(contador3); 04904 QGraphicsTextItem *TFFinal=new QGraphicsTextItem(this->a->paginas[contador]->Texto(txt)); 04905 QFont *fuenteFFinal=new QFont(this->a->paginas[contador]->FuenteTexto(txt).family(),((this->a->paginas[contador]->TamTexto(txt)*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, this->a->paginas[contador]->CursivaTexto(txt)); 04906 if(this->a->paginas[contador]->NegritaTexto(txt)){ 04907 fuenteFFinal->setBold(true); 04908 } 04909 if(this->a->paginas[contador]->SubrayadoTexto(txt)){ 04910 fuenteFFinal->setUnderline(true); 04911 } 04912 04913 TFFinal->setDefaultTextColor(this->a->paginas[contador]->ColorTexto(txt)); 04914 TFFinal->setFont(*fuenteFFinal); 04915 04916 TFFinal->setTextWidth(((this->a->paginas[contador]->WTexto(txt)*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 04917 if(this->a->paginas[contador]->VerticalTexto(txt)){ 04918 TFFinal->setRotation(90); 04919 } 04920 04921 TFFinal->setPos(((this->a->paginas[contador]->PosXTexto(txt)*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), ((this->a->paginas[contador]->PosYTexto(txt)*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 04922 if(txt.centrado){ 04923 // Para centrar el texto 04924 QTextCursor cursorFronFin = TFFinal->textCursor(); 04925 QTextBlockFormat bfmtFronFin = cursorFronFin.blockFormat(); 04926 bfmtFronFin.setAlignment(Qt::AlignCenter); 04927 cursorFronFin.setBlockFormat(bfmtFronFin); 04928 TFFinal->setTextCursor(cursorFronFin); 04929 } 04930 04931 this->a->paginas[contador]->versionFinal->scene()->addItem(TFFinal); 04932 delete fuenteFFinal; 04933 } 04934 04935 } 04936 04937 // El texto ya está cargado 04938 if(a->paginas[contador]->ContieneMarcos()){ 04939 for(int contadorMarcos=0; contadorMarcos < a->paginas[contador]->getMarcos().size(); contadorMarcos++){ 04940 if(!a->paginas[contador]->getMarcos().at(contadorMarcos).nombre->isEmpty()){ 04941 QPixmap *h; 04942 QString marcoName=this->directoriodetrabajo.absolutePath()+"/frames/"; 04943 marcoName.append(a->paginas[contador]->getMarcos().at(contadorMarcos).nombre); 04944 h=new QPixmap(marcoName); 04945 try{ 04946 if(h->isNull()){ 04947 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 04948 } 04949 }catch(std::exception& e){ 04950 Error *err=new Error(4, e.what(), this); 04951 err->LanzarDialogo(); 04952 delete err; 04953 exit(1); 04954 } 04955 QGraphicsPixmapItem *item2; 04956 int numeroFoto=a->paginas[contador]->getMarcos().at(contadorMarcos).idFoto; 04957 item2=new QGraphicsPixmapItem(h->scaled((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum())), (((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 04958 item2->setPos((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum())), (((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 04959 item2->setAcceptHoverEvents(true); 04960 a->paginas[contador]->versionFinal->scene()->addItem(item2); 04961 delete h; 04962 } 04963 } 04964 } 04965 if(this->a->paginas[contador]->GetPaginaEditada()){ 04966 unsigned pl=0; 04967 for(int d=0; d < this->a->paginas[contador]->GetObjetosPagina().size(); d++){ 04968 float x, y, posx, posy; 04969 if(this->a->paginas[contador]->GetObjetosPagina().at(d)->acceptHoverEvents()){ 04970 posx=this->posicionesItemsPaginas[contador].at(pl).x ; 04971 posy=this->posicionesItemsPaginas[contador].at(pl).y; 04972 x=((posx*(this->dimensionWpagina))/(this->controlador->getWVisorAlbum())); 04973 y=((posy*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())); 04974 this->a->paginas[contador]->versionFinal->items().at(d)->setPos(x,y); 04975 pl++; 04976 } 04977 } 04978 } 04979 04980 04981 04982 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 04983 a->paginas[contador]->versionFinal->scene()->addLine(231*(a->portada->GetW())/462, 2, 231*(a->portada->GetW())/462, 318*(a->portada->GetH())/321)->setAcceptHoverEvents(false); 04984 } 04985 04986 a->paginas[contador]->versionFinal->scene()->render(&painter); 04987 04988 04989 barra->setValue(contador+1); 04990 04991 04992 this->a->paginas[contador]->versionFinal->scene()->clear(); 04993 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 04994 a->paginas[contador]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 04995 04996 } 04997 04998 } 04999 }catch(std::exception& e){ 05000 Error *err=new Error(1, e.what(), this); 05001 err->LanzarDialogo(); 05002 delete err; 05003 exit(1); 05004 } 05005 barra->setValue(a->paginas.size()+1); 05006 this->ui->statusBar->setMaximumWidth(wAux); 05007 barra->hide(); 05008 delete barra; 05009 } 05010 } 05011 delete impresora; 05012 } 05013 05014 void FormPrincipal::ExportarJPG(){ 05015 this->Exportar(false, true); 05016 } 05017 05018 void FormPrincipal::ExportarPDF(){ 05019 this->Exportar(true, false); 05020 } 05021 05022 void FormPrincipal::Exportar(bool pdf, bool jpg){ 05023 // Prueba de impresión en PDF de la portada 05024 QPrinter printer(QPrinter::ScreenResolution); 05025 QFileDialog::Options options; 05026 QString selectedFilter; 05027 QString fileName; 05028 if(!pdf && !jpg){ 05029 selectedFilter="PDF: Portable Document Format (*.pdf);;JPEG: Archivo de imagen (*.jpeg)"; 05030 fileName = QFileDialog::getSaveFileName(this,tr("Exportar album"), this->directorioCasaUsuario, selectedFilter, &selectedFilter, options); 05031 }else{ 05032 if(pdf && !jpg){ 05033 selectedFilter="PDF: Portable Document Format (*.pdf)"; 05034 fileName = QFileDialog::getSaveFileName(this,tr("Exportar album"), this->directorioCasaUsuario, selectedFilter, &selectedFilter, options); 05035 }else{ 05036 if(!pdf && jpg){ 05037 selectedFilter="JPEG: Archivo de imagen (*.jpeg)"; 05038 fileName = QFileDialog::getSaveFileName(this,tr("Exportar album"), this->directorioCasaUsuario, selectedFilter, &selectedFilter, options); 05039 }else{ 05040 selectedFilter="PDF: Portable Document Format (*.pdf);;JPEG: Archivo de imagen (*.jpeg)"; 05041 fileName = QFileDialog::getSaveFileName(this,tr("Exportar album"), this->directorioCasaUsuario, selectedFilter, &selectedFilter, options); 05042 } 05043 } 05044 } 05045 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05046 05047 QSizeF tam(a->portada->GetW(), a->portada->GetH()); 05048 printer.setPaperSize(tam, QPrinter::DevicePixel); 05049 } 05050 if(!fileName.isEmpty()){ 05051 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05052 printer.setOutputFormat(QPrinter::PdfFormat); 05053 if(!fileName.contains(".pdf")){ 05054 fileName=fileName + ".pdf"; 05055 } 05056 }else{ 05057 05058 if(!fileName.contains(".jpeg")){ 05059 fileName=fileName + ".jpeg"; 05060 } 05061 } 05062 05063 try{ 05064 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05065 printer.setOutputFileName(fileName); 05066 } 05067 }catch(std::exception& e){ 05068 Error *err=new Error(5, e.what(), this); 05069 err->LanzarDialogo(); 05070 delete err; 05071 exit(1); 05072 } 05073 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05074 printer.setPageMargins(0, 0, 0, 0, QPrinter::DevicePixel); 05075 05076 05077 if(this->creadasPaginas){ 05078 printer.setFromTo(0,a->paginas.size()+1); 05079 }else{ 05080 printer.setFromTo(0,0); 05081 } 05082 } 05083 QPainter painter(&printer); 05084 05085 QImage img(a->portada->GetW(), a->portada->GetH(), QImage::Format_RGB32); 05086 QPainter painter2(&img); 05087 QGraphicsScene *escenaFinal; 05088 try{ 05089 escenaFinal= new QGraphicsScene(); 05090 }catch(std::exception& e){ 05091 Error *err=new Error(2, e.what(), this); 05092 err->LanzarDialogo(); 05093 delete err; 05094 exit(1); 05095 } 05096 a->portada->versionFinal->setScene(escenaFinal); 05097 a->portada->versionFinal->setSceneRect(0,0,a->portada->GetW(), a->portada->GetH()); 05098 05099 if(a->portada->ColordeFondo()){ 05100 //Establecemos de fondo un color. 05101 if(!this->a->portada->activadaMascara()){ 05102 QBrush *wallFinal= new QBrush(a->portada->FondoClr()); 05103 a->portada->versionFinal->scene()->setBackgroundBrush(*wallFinal); 05104 delete wallFinal; 05105 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 05106 a->portada->versionFinal->scene()->addLine(0, 0, a->portada->GetW(), 0); 05107 05108 }else{ 05109 05110 if(a->portada->GetW()>2000){ 05111 a->portada->versionFinal->scene()->addLine(0, 0, a->portada->GetW(), 0); 05112 05113 05114 }else{ 05115 05116 a->portada->versionFinal->scene()->addLine(0,0,a->portada->GetW(),0); 05117 05118 05119 } 05120 05121 } 05122 } 05123 }else{ 05124 if(!this->a->portada->activadaMascara()){ 05125 //Establecemos de fondo una imagen, escalaremos todo al final 05126 QPixmap *gfinal; 05127 try{ 05128 gfinal=new QPixmap(a->portada->FondoImg()); 05129 if(gfinal->isNull()){ 05130 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 05131 } 05132 }catch(std::exception& e){ 05133 Error *err=new Error(4, e.what(), this); 05134 err->LanzarDialogo(); 05135 delete err; 05136 exit(1); 05137 } 05138 05139 QGraphicsPixmapItem *itemfinal=new QGraphicsPixmapItem(gfinal->scaled(a->portada->GetW(), a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05140 itemfinal->setPos(0, 0); 05141 a->portada->versionFinal->scene()->addItem(itemfinal); 05142 delete gfinal; 05143 } 05144 } 05145 if(this->a->portada->hayImagenTrasera()){ 05146 // Imagen Trasera 05147 QPixmap *hfinal; 05148 try{ 05149 hfinal=new QPixmap(a->portada->RutaFotoTrasera()); 05150 if(hfinal->isNull()){ 05151 throw std::ios_base::failure(tr("No pudo abrirse la imagen trasera de la portada.").toStdString()); 05152 } 05153 }catch(std::exception& e){ 05154 Error *err=new Error(4, e.what(), this); 05155 err->LanzarDialogo(); 05156 delete err; 05157 exit(1); 05158 } 05159 05160 QGraphicsPixmapItem *item2final; 05161 05162 05163 if(hfinal->width() > hfinal->height()){ 05164 if(a->portada->getImagenPosVertical("trasera")){ 05165 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionHImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionWImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05166 item2final->setPos(((((a->portada->PosicionXImagenTrasera()+a->portada->DimensionWImagenTrasera())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05167 05168 item2final->setRotation(90); 05169 item2final->setAcceptTouchEvents(true); 05170 }else{ 05171 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionWImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionHImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05172 item2final->setPos((((a->portada->PosicionXImagenTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05173 05174 } 05175 }else{ 05176 if(!a->portada->getImagenPosVertical("trasera")){ 05177 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionHImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionWImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05178 item2final->setPos(((((a->portada->PosicionXImagenTrasera()+a->portada->DimensionWImagenTrasera())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05179 05180 item2final->setRotation(90); 05181 item2final->setAcceptTouchEvents(true); 05182 }else{ 05183 item2final=new QGraphicsPixmapItem(hfinal->scaled((a->portada->DimensionWImagenTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()), (a->portada->DimensionHImagenTrasera()*a->portada->GetH())/(this->controlador->getHVisorAlbum()), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05184 item2final->setPos((((a->portada->PosicionXImagenTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05185 05186 05187 } 05188 05189 } 05190 if(!this->a->portada->activadaMascara()){ 05191 05192 item2final->setAcceptHoverEvents(true); 05193 } 05194 a->portada->versionFinal->scene()->addItem(item2final); 05195 delete hfinal; 05196 } 05197 05198 if(this->a->portada->hayImagenFrontal()){ 05199 // Imagen Frontal 05200 QPixmap *ifinal; 05201 try{ 05202 ifinal=new QPixmap(a->portada->RutaFotoFrontal()); 05203 if(ifinal->isNull()){ 05204 throw std::ios_base::failure(tr("No pudo abrirse la imagen frontal de la portada.").toStdString()); 05205 } 05206 }catch(std::exception& e){ 05207 Error *err=new Error(4, e.what(), this); 05208 err->LanzarDialogo(); 05209 delete err; 05210 exit(1); 05211 } 05212 QGraphicsPixmapItem *item3final; 05213 05214 if(ifinal->width() > ifinal->height()){ 05215 if(a->portada->getImagenPosVertical("frontal")){ 05216 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionHImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionWImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05217 item3final->setPos(((((a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05218 05219 item3final->setRotation(90); 05220 item3final->setAcceptTouchEvents(true); 05221 }else{ 05222 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionWImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionHImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05223 item3final->setPos((((a->portada->PosicionXImagenFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05224 05225 } 05226 }else{ 05227 if(!a->portada->getImagenPosVertical("frontal")){ 05228 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionHImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionWImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05229 item3final->setPos(((((a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal())*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05230 05231 item3final->setRotation(90); 05232 item3final->setAcceptTouchEvents(true); 05233 }else{ 05234 item3final=new QGraphicsPixmapItem(ifinal->scaled(((a->portada->DimensionWImagenFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum())), ((a->portada->DimensionHImagenFrontal()*a->portada->GetH())/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05235 item3final->setPos((((a->portada->PosicionXImagenFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosicionYImagenFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05236 05237 05238 } 05239 05240 } 05241 if(!this->a->portada->activadaMascara()){ 05242 05243 item3final->setAcceptHoverEvents(true); 05244 } 05245 a->portada->versionFinal->scene()->addItem(item3final); 05246 delete ifinal; 05247 } 05248 05249 if(this->a->portada->activadaMascara() && this->a->portada->ColordeFondo()){ 05250 05251 05252 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 05253 QImage *img=new QImage(path); 05254 QRgb color=this->a->portada->FondoClr().rgb(); 05255 for(int a=0; a < img->width(); a++){ 05256 for(int b=0; b < img->height(); b++){ 05257 if(img->pixel(a,b)!=0){ 05258 img->setPixel(a,b,color); 05259 } 05260 } 05261 } 05262 QPixmap *g=new QPixmap(); 05263 g->convertFromImage(*img, Qt::AutoColor); 05264 05265 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->a->portada->GetW(), this->a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05266 item->setPos(0, 0); 05267 item->setAcceptHoverEvents(false); 05268 this->a->portada->versionFinal->scene()->addItem(item); 05269 delete img; 05270 delete g; 05271 } 05272 05273 if(this->a->portada->activadaMascara() && !this->a->portada->ColordeFondo()){ 05274 05275 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 05276 QImage *mascara=new QImage(path); 05277 QImage *imgFondo=new QImage(this->a->portada->FondoImg()); 05278 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 05279 05280 for(int a=0; a < imgFinal.width(); a++){ 05281 for(int b=0; b < imgFinal.height(); b++){ 05282 if(imgFinal.pixel(a,b)!=0){ 05283 imgFinal.setPixel(a,b,imgFondo->pixel(a,b)); 05284 } 05285 } 05286 } 05287 QPixmap *g=new QPixmap(); 05288 05289 g->convertFromImage(imgFinal, Qt::AutoColor); 05290 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->a->portada->GetW(), this->a->portada->GetH(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05291 item->setPos(0, 0); 05292 item->setAcceptHoverEvents(false); 05293 this->a->portada->versionFinal->scene()->addItem(item); 05294 delete mascara; 05295 delete imgFondo; 05296 delete g; 05297 } 05298 05299 05300 if(this->a->portada->hayTextoFrontal()){ 05301 // Texto Frontal 05302 QGraphicsTextItem *TFFinal=new QGraphicsTextItem(a->portada->TextoFrontal()); 05303 QFont *fuenteFFinal=new QFont(a->portada->FuenteTextoFrontal().family(),((a->portada->TamTextoFrontal()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoFrontal()); 05304 if(a->portada->NegritaTextoFrontal()){ 05305 fuenteFFinal->setBold(true); 05306 } 05307 if(a->portada->SubrayadoTextoFrontal()){ 05308 fuenteFFinal->setUnderline(true); 05309 } 05310 05311 TFFinal->setDefaultTextColor(a->portada->ColorTextoFrontal()); 05312 TFFinal->setFont(*fuenteFFinal); 05313 05314 TFFinal->setTextWidth(((a->portada->WTextoFrontal()*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 05315 if(a->portada->VerticalTextoFrontal()){ 05316 TFFinal->setRotation(90); 05317 } 05318 05319 TFFinal->setPos((((a->portada->PosXTextoFrontal()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoFrontal()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05320 if(a->portada->CentradoTextoFrontal()){ 05321 // Para centrar el texto 05322 QTextCursor cursorFronFin = TFFinal->textCursor(); 05323 QTextBlockFormat bfmtFronFin = cursorFronFin.blockFormat(); 05324 bfmtFronFin.setAlignment(Qt::AlignCenter); 05325 cursorFronFin.setBlockFormat(bfmtFronFin); 05326 TFFinal->setTextCursor(cursorFronFin); 05327 } 05328 05329 a->portada->versionFinal->scene()->addItem(TFFinal); 05330 delete fuenteFFinal; 05331 } 05332 if(this->a->portada->hayTextoTrasero()){ 05333 // Texto Trasero 05334 QGraphicsTextItem *TTFinal=new QGraphicsTextItem(a->portada->TextoTrasera()); 05335 QFont *fuenteTFinal=new QFont(a->portada->FuenteTextoTrasera().family(),((a->portada->TamTextoTrasera()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoTrasera()); 05336 if(a->portada->NegritaTextoTrasera()){ 05337 fuenteTFinal->setBold(true); 05338 } 05339 if(a->portada->SubrayadoTextoTrasera()){ 05340 fuenteTFinal->setUnderline(true); 05341 } 05342 TTFinal->setFont(*fuenteTFinal); 05343 TTFinal->setTextWidth(((a->portada->WTextoTrasera()*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 05344 if(a->portada->VerticalTextoTrasera()){ 05345 TTFinal->setRotation(90); 05346 } 05347 TTFinal->setPos((((a->portada->PosXTextoTrasera()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoTrasera()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05348 TTFinal->setDefaultTextColor(a->portada->ColorTextoTrasera()); 05349 if(a->portada->CentradoTextoTrasera()){ 05350 // Para centrar el texto 05351 QTextCursor cursorTTrasFin = TTFinal->textCursor(); 05352 QTextBlockFormat bfmtTTrasFin = cursorTTrasFin.blockFormat(); 05353 bfmtTTrasFin.setAlignment(Qt::AlignCenter); 05354 cursorTTrasFin.setBlockFormat(bfmtTTrasFin); 05355 TTFinal->setTextCursor(cursorTTrasFin); 05356 } 05357 05358 a->portada->versionFinal->scene()->addItem(TTFinal); 05359 delete fuenteTFinal; 05360 } 05361 // Dimensiones PDF W: 5402.45 H: 3730.8 05362 if(this->ui->actionLineaSeparacionPortada->isChecked()){ 05363 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 05364 //Tamaño clásico 05365 a->portada->versionFinal->scene()->addLine((a->portada->GetW()*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 05366 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 05367 }else{ 05368 if(a->portada->GetW()>2000){ 05369 //Tamaño Maxi 05370 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 05371 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 05372 05373 }else{ 05374 //Tamaño Mini 05375 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*216/462), 2, ((a->portada->GetW())*216/462), a->portada->GetH()); 05376 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())*247/462), 2, ((a->portada->GetW())*247/462), a->portada->GetH()); 05377 05378 } 05379 05380 } 05381 }else{ 05382 if(a->portada->GetW()>1711 && a->portada->GetW()<2000){ 05383 //Tamaño clásico 05384 a->portada->versionFinal->scene()->addLine((a->portada->GetW()), 2, ((a->portada->GetW())), a->portada->GetH()); 05385 a->portada->versionFinal->scene()->addLine((a->portada->GetW()), 2, ((a->portada->GetW())), a->portada->GetH()); 05386 05387 }else{ 05388 if(a->portada->GetW()>2000){ 05389 //Tamaño Maxi 05390 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 05391 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 05392 05393 }else{ 05394 //Tamaño Mini 05395 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 05396 a->portada->versionFinal->scene()->addLine(((a->portada->GetW())), 2, ((a->portada->GetW())), a->portada->GetH()); 05397 05398 } 05399 05400 } 05401 } 05402 if(this->a->portada->hayTextoLateral()){ 05403 // Texto Lateral 05404 QGraphicsTextItem *TLFinal=new QGraphicsTextItem(a->portada->TextoLateral()); 05405 QFont *fuenteLFinal=new QFont(a->portada->FuenteTextoLateral().family(), ((a->portada->TamTextoLateral()*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, a->portada->CursivaTextoLateral()); 05406 if(a->portada->NegritaTextoLateral()){ 05407 fuenteLFinal->setBold(true); 05408 } 05409 05410 if(a->portada->SubrayadoTextoLateral()){ 05411 fuenteLFinal->setUnderline(true); 05412 } 05413 TLFinal->setFont(*fuenteLFinal); 05414 05415 if(a->portada->VerticalTextoLateral()){ 05416 TLFinal->setRotation(90); 05417 05418 } 05419 TLFinal->setPos((((a->portada->PosXTextoLateral()*(a->portada->GetW())))/(this->controlador->getWVisorAlbum())), ((a->portada->PosYTextoLateral()*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05420 TLFinal->setDefaultTextColor(a->portada->ColorTextoLateral()); 05421 if(a->portada->CentradoTextoLateral()){ 05422 // Para centrar el texto 05423 QTextCursor cursorLLatFin = TLFinal->textCursor(); 05424 QTextBlockFormat bfmtLLatFin = cursorLLatFin.blockFormat(); 05425 bfmtLLatFin.setAlignment(Qt::AlignCenter); 05426 cursorLLatFin.setBlockFormat(bfmtLLatFin); 05427 TLFinal->setTextCursor(cursorLLatFin); 05428 } 05429 05430 05431 a->portada->versionFinal->scene()->addItem(TLFinal); 05432 delete fuenteLFinal; 05433 } 05434 unsigned iItem, itexto; 05435 iItem=0; 05436 itexto=0; 05437 try{ 05438 if(!this->posicionesItemsPortada.isEmpty()){ 05439 for(int d=0; d < this->a->portada->getObjetosPortada().size(); d++){ 05440 float x, y, posx, posy; 05441 if(this->a->portada->getObjetosPortada().at(d)->acceptHoverEvents()){ 05442 posx=this->posicionesItemsPortada[iItem].x; 05443 posy=this->posicionesItemsPortada[iItem].y; 05444 x=((posx*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())); 05445 y=((posy*(a->portada->GetH()))/(this->controlador->getHVisorAlbum())); 05446 a->portada->versionFinal->items().at(d)->setPos(x,y); 05447 iItem++; 05448 } 05449 05450 } 05451 } 05452 }catch(std::exception& e){ 05453 Error *err=new Error(1, e.what(), this); 05454 err->LanzarDialogo(); 05455 delete err; 05456 exit(1); 05457 } 05458 05459 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05460 a->portada->versionFinal->scene()->render(&painter); 05461 }else{ 05462 painter2.setRenderHint(QPainter::Antialiasing); 05463 05464 a->portada->versionFinal->scene()->render(&painter2); 05465 img.save(fileName.remove(".jpeg").append("_Portada.jpeg")); 05466 fileName.remove("_Portada.jpeg"); 05467 fileName.append(".jpeg"); 05468 05469 } 05470 05471 if(this->creadasPaginas){ 05472 QProgressBar *barra= new QProgressBar(this); 05473 int wAux=this->ui->statusBar->width(); 05474 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 05475 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 05476 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 05477 05478 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 05479 05480 05481 barra->setMinimum(0); 05482 barra->setRange(0, a->paginas.size()+1); 05483 barra->show(); 05484 barra->setValue(1); 05485 try{ 05486 for(unsigned contador=0; contador < a->paginas.size(); contador++){ 05487 if(contador!=0){ 05488 barra->setValue(contador); 05489 } 05490 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 05491 a->paginas[contador]->versionReducida->scene()->removeItem(a->paginas[contador]->versionReducida->scene()->itemAt(231*(this->controlador->getWVisorAlbum())/462, 2)); 05492 } 05493 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05494 printer.newPage(); 05495 painter.begin(&printer); 05496 } 05497 05498 05499 this->a->paginas[contador]->versionFinal->setSceneRect(0,0, this->dimensionWpagina, this->dimensionHpagina); 05500 QGraphicsScene *escenaFinal; 05501 try{ 05502 escenaFinal= new QGraphicsScene(); 05503 }catch(std::exception& e){ 05504 Error *err=new Error(2, e.what(), this); 05505 err->LanzarDialogo(); 05506 delete err; 05507 exit(1); 05508 } 05509 this->a->paginas[contador]->versionFinal->setScene(escenaFinal); 05510 bool avisador=false; 05511 if(this->a->paginas[contador]->ColordeFondo() && !this->a->paginas[contador]->activadaMascara()){ 05512 QBrush *wallFinal= new QBrush(this->a->paginas[contador]->GetFondoColor()); 05513 this->a->paginas[contador]->versionFinal->scene()->setBackgroundBrush(*wallFinal); 05514 delete wallFinal; 05515 if(this->dimensionWpagina>1711 && this->dimensionWpagina<2000){ 05516 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 05517 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 05518 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), (this->dimensionHpagina), *pen); 05519 }else{ 05520 05521 if(this->dimensionWpagina>2000){ 05522 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 05523 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 05524 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), ((this->dimensionHpagina)), *pen); 05525 }else{ 05526 this->a->paginas[contador]->versionFinal->scene()->addLine(0, 0, this->dimensionWpagina, 0); 05527 QPen *pen=new QPen(this->a->paginas[contador]->GetFondoColor()); 05528 this->a->paginas[contador]->versionFinal->scene()->addLine(((this->dimensionWpagina)*216/462), 2, ((this->dimensionWpagina)*216/462), ((this->dimensionHpagina)), *pen); 05529 } 05530 05531 } 05532 }else{ 05533 if(!this->a->paginas[contador]->activadaMascara()){ 05534 avisador=true; 05535 QPixmap *gfinal; 05536 try{ 05537 gfinal=new QPixmap(this->a->paginas[contador]->GetFondoImagen()); 05538 if(gfinal->isNull()){ 05539 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de una de las páginas.").toStdString()); 05540 } 05541 }catch(std::exception& e){ 05542 Error *err=new Error(4, e.what(), this); 05543 err->LanzarDialogo(); 05544 delete err; 05545 exit(1); 05546 } 05547 QGraphicsPixmapItem *itemfinal=new QGraphicsPixmapItem(gfinal->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05548 itemfinal->setPos(0, 0); 05549 this->a->paginas[contador]->versionFinal->scene()->addItem(itemfinal); 05550 delete gfinal; 05551 } 05552 } 05553 05554 for(unsigned contador2=0; contador2 < this->a->paginas[contador]->GetVectorImagenes().size(); contador2++){ 05555 QPixmap *hfinal; 05556 try{ 05557 hfinal=new QPixmap(this->a->paginas[contador]->GetVectorImagenes().at(contador2).ruta); 05558 if(hfinal->isNull()){ 05559 throw std::ios_base::failure(tr("No pudo abrirse una de las imagenes de una de las páginas.").toStdString()); 05560 } 05561 }catch(std::exception& e){ 05562 Error *err=new Error(4, e.what(), this); 05563 err->LanzarDialogo(); 05564 delete err; 05565 exit(1); 05566 } 05567 QGraphicsPixmapItem *item2final; 05568 if(hfinal->width() > hfinal->height()){ 05569 if(this->a->paginas[contador]->getImagenPosVertical(contador2)){ 05570 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05571 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x + this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 05572 item2final->setRotation(90); 05573 item2final->setAcceptTouchEvents(true); 05574 }else{ 05575 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05576 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 05577 05578 } 05579 }else{ 05580 if(!this->a->paginas[contador]->getImagenPosVertical(contador2)){ 05581 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05582 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x + this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 05583 item2final->setRotation(90); 05584 item2final->setAcceptTouchEvents(true); 05585 }else{ 05586 item2final=new QGraphicsPixmapItem(hfinal->scaled(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))), (((this->a->paginas[contador]->GetVectorImagenes().at(contador2).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05587 item2final->setPos(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum()))),(((this->a->paginas[contador]->GetVectorImagenes().at(contador2).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 05588 05589 } 05590 05591 } 05592 if(!this->a->GetPagina(contador)->activadaMascara()){ 05593 05594 item2final->setAcceptHoverEvents(true); 05595 } 05596 this->a->paginas[contador]->versionFinal->scene()->addItem(item2final); 05597 delete hfinal; 05598 } 05599 //Imágenes ya cargadas 05600 05601 if(this->a->GetPagina(contador)->activadaMascara() && this->a->GetPagina(contador)->ColordeFondo()){ 05602 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(contador)->getMascara(); 05603 QImage *img=new QImage(path); 05604 QRgb color=this->a->GetPagina(contador)->GetFondoColor().rgb(); 05605 for(int ap=0; ap < img->width(); ap++){ 05606 for(int b=0; b < img->height(); b++){ 05607 if(img->pixel(ap,b)!=0){ 05608 img->setPixel(ap,b,color); 05609 } 05610 } 05611 } 05612 QPixmap *g=new QPixmap(); 05613 g->convertFromImage(*img, Qt::AutoColor); 05614 05615 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05616 item->setPos(0, 0); 05617 item->setAcceptHoverEvents(false); 05618 this->a->paginas[contador]->versionFinal->scene()->addItem(item); 05619 delete img; 05620 delete g; 05621 } 05622 05623 if(this->a->GetPagina(contador)->activadaMascara() && !this->a->GetPagina(contador)->ColordeFondo()){ 05624 05625 05626 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(contador)->getMascara(); 05627 QImage *mascara=new QImage(path); 05628 QImage *imgFondo=new QImage(this->a->GetPagina(contador)->GetFondoImagen()); 05629 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 05630 05631 for(int z=0; z < imgFinal.width(); z++){ 05632 for(int b=0; b < imgFinal.height(); b++){ 05633 if(imgFinal.pixel(z,b)!=0){ 05634 imgFinal.setPixel(z,b,imgFondo->pixel(z,b)); 05635 } 05636 } 05637 } 05638 QPixmap *g=new QPixmap(); 05639 05640 g->convertFromImage(imgFinal, Qt::AutoColor); 05641 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled(this->dimensionWpagina, this->dimensionHpagina, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05642 item->setPos(0, 0); 05643 item->setAcceptHoverEvents(false); 05644 a->paginas[contador]->versionFinal->scene()->addItem(item); 05645 delete mascara; 05646 delete imgFondo; 05647 delete g; 05648 } 05649 05650 if(this->a->paginas[contador]->GetNumTextos()!=0){ 05651 for(unsigned contador3=0; contador3 < this->a->paginas[contador]->GetVectorTextos().size(); contador3++){ 05652 ATexto txt=this->a->paginas[contador]->GetVectorTextos().at(contador3); 05653 QGraphicsTextItem *TFFinal=new QGraphicsTextItem(this->a->paginas[contador]->Texto(txt)); 05654 QFont *fuenteFFinal=new QFont(this->a->paginas[contador]->FuenteTexto(txt).family(),((this->a->paginas[contador]->TamTexto(txt)*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), 50, this->a->paginas[contador]->CursivaTexto(txt)); 05655 if(this->a->paginas[contador]->NegritaTexto(txt)){ 05656 fuenteFFinal->setBold(true); 05657 } 05658 if(this->a->paginas[contador]->SubrayadoTexto(txt)){ 05659 fuenteFFinal->setUnderline(true); 05660 } 05661 05662 TFFinal->setDefaultTextColor(this->a->paginas[contador]->ColorTexto(txt)); 05663 TFFinal->setFont(*fuenteFFinal); 05664 05665 TFFinal->setTextWidth(((this->a->paginas[contador]->WTexto(txt)*a->portada->GetW())/(this->controlador->getWVisorAlbum()))); 05666 if(this->a->paginas[contador]->VerticalTexto(txt)){ 05667 TFFinal->setRotation(90); 05668 } 05669 05670 TFFinal->setPos(((this->a->paginas[contador]->PosXTexto(txt)*(a->portada->GetW()))/(this->controlador->getWVisorAlbum())), ((this->a->paginas[contador]->PosYTexto(txt)*(a->portada->GetH()))/(this->controlador->getHVisorAlbum()))); 05671 if(txt.centrado){ 05672 // Para centrar el texto 05673 QTextCursor cursorFronFin = TFFinal->textCursor(); 05674 QTextBlockFormat bfmtFronFin = cursorFronFin.blockFormat(); 05675 bfmtFronFin.setAlignment(Qt::AlignCenter); 05676 cursorFronFin.setBlockFormat(bfmtFronFin); 05677 TFFinal->setTextCursor(cursorFronFin); 05678 } 05679 05680 this->a->paginas[contador]->versionFinal->scene()->addItem(TFFinal); 05681 delete fuenteFFinal; 05682 } 05683 05684 } 05685 05686 // El texto ya está cargado 05687 if(a->paginas[contador]->ContieneMarcos()){ 05688 for(int contadorMarcos=0; contadorMarcos < a->paginas[contador]->getMarcos().size(); contadorMarcos++){ 05689 if(!a->paginas[contador]->getMarcos().at(contadorMarcos).nombre->isEmpty()){ 05690 QPixmap *h; 05691 QString marcoName=this->directoriodetrabajo.absolutePath() +"/frames/"; 05692 marcoName.append(a->paginas[contador]->getMarcos().at(contadorMarcos).nombre); 05693 h=new QPixmap(marcoName); 05694 try{ 05695 if(h->isNull()){ 05696 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 05697 } 05698 }catch(std::exception& e){ 05699 Error *err=new Error(4, e.what(), this); 05700 err->LanzarDialogo(); 05701 delete err; 05702 exit(1); 05703 } 05704 QGraphicsPixmapItem *item2; 05705 int numeroFoto=a->paginas[contador]->getMarcos().at(contadorMarcos).idFoto; 05706 item2=new QGraphicsPixmapItem(h->scaled((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).w)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum())), (((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).h)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 05707 item2->setPos((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).pos_x)*(this->dimensionWpagina/(this->controlador->getWVisorAlbum())), (((a->GetPagina(contador)->GetVectorImagenes().at(numeroFoto-1).pos_y)*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum()))); 05708 05709 item2->setAcceptHoverEvents(true); 05710 a->paginas[contador]->versionFinal->scene()->addItem(item2); 05711 delete h; 05712 } 05713 05714 } 05715 } 05716 if(this->a->paginas[contador]->GetPaginaEditada()){ 05717 unsigned pl=0; 05718 for(int d=0; d < this->a->paginas[contador]->GetObjetosPagina().size(); d++){ 05719 float x, y, posx, posy; 05720 if(this->a->paginas[contador]->GetObjetosPagina().at(d)->acceptHoverEvents()){ 05721 posx=this->posicionesItemsPaginas[contador].at(pl).x ; 05722 posy=this->posicionesItemsPaginas[contador].at(pl).y; 05723 x=((posx*(this->dimensionWpagina))/(this->controlador->getWVisorAlbum())); 05724 y=((posy*(this->dimensionHpagina))/(this->controlador->getHVisorAlbum())); 05725 05726 this->a->paginas[contador]->versionFinal->items().at(d)->setPos(x,y); 05727 pl++; 05728 } 05729 } 05730 05731 } 05732 05733 05734 05735 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 05736 a->paginas[contador]->versionFinal->scene()->addLine(231*(a->portada->GetW())/462, 2, 231*(a->portada->GetW())/462, 318*(a->portada->GetH())/321)->setAcceptHoverEvents(false); 05737 } 05738 if(selectedFilter!="JPEG: Archivo de imagen (*.jpeg)"){ 05739 a->paginas[contador]->versionFinal->scene()->render(&painter); 05740 }else{ 05741 QImage img2(a->portada->GetW(), a->portada->GetH(), QImage::Format_RGB32); 05742 QPainter painter3(&img2); 05743 painter3.setRenderHint(QPainter::Antialiasing); 05744 05745 a->paginas[contador]->versionFinal->scene()->render(&painter3); 05746 QString aux("_"); 05747 aux.append(QString::number(contador)).append(".jpeg"); 05748 img2.save(fileName.remove(".jpeg").append("_").append(QString::number(contador)).append(".jpeg")); 05749 05750 fileName.remove(aux); 05751 fileName.append(".jpeg"); 05752 } 05753 05754 barra->setValue(contador+1); 05755 05756 05757 this->a->paginas[contador]->versionFinal->scene()->clear(); 05758 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 05759 a->paginas[contador]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 05760 05761 } 05762 05763 } 05764 }catch(std::exception& e){ 05765 Error *err=new Error(1, e.what(), this); 05766 err->LanzarDialogo(); 05767 delete err; 05768 exit(1); 05769 } 05770 barra->setValue(a->paginas.size()+1); 05771 barra->hide(); 05772 this->ui->statusBar->setMaximumWidth(wAux); 05773 delete barra; 05774 } 05775 } 05776 05777 } 05778 05779 bool FormPrincipal::CreacionPaginasPersonalizadas(){ 05780 int paginas=a->GetVectorImagenes().size(); 05781 int contador=0; 05782 int fotosRestantes=paginas; 05783 bool estado=true; 05784 unsigned contadorAuxiliar=0; 05785 while(fotosRestantes>0){ 05786 05787 dialogcreacionpaginaspersonalizadas *DialogoPaginasPersonalizadas; 05788 try{ 05789 DialogoPaginasPersonalizadas= new dialogcreacionpaginaspersonalizadas(fotosRestantes, contador, this->controlador, this->directoriodetrabajo); 05790 }catch(std::exception& e){ 05791 Error *err=new Error(2, e.what(), this); 05792 err->LanzarDialogo(); 05793 delete err; 05794 exit(1); 05795 } 05796 DialogoPaginasPersonalizadas->setMiniaturasTexturas(this->miniaturasTexturas); 05797 DialogoPaginasPersonalizadas->setMiniaturasMarcos(this->miniaturasMarcos); 05798 05799 DialogoPaginasPersonalizadas->exec(); 05800 if(DialogoPaginasPersonalizadas->result()==1){ 05801 Pagina *pag; 05802 try{ 05803 pag=new Pagina(0,0,this); 05804 }catch(std::exception& e){ 05805 Error *err=new Error(2, e.what(), this); 05806 err->LanzarDialogo(); 05807 delete err; 05808 exit(1); 05809 } 05810 if(DialogoPaginasPersonalizadas->EscogidosMarcos()){ 05811 pag->SetMarcos(DialogoPaginasPersonalizadas->getMarcos()); 05812 } 05813 if(DialogoPaginasPersonalizadas->ElegidoImagen()){ 05814 pag->DesactivarColordefondo(); 05815 pag->LoadFondo(DialogoPaginasPersonalizadas->GetImagenFondo()); 05816 }else{ 05817 if(DialogoPaginasPersonalizadas->ElegidoColor()){ 05818 pag->ActivarColordefondo(); 05819 pag->LoadFondoColor(DialogoPaginasPersonalizadas->GetColorFondo()); 05820 } 05821 } 05822 pag->LoadRutaPlantilla(DialogoPaginasPersonalizadas->GetNombrePlantilla()); 05823 QString aux=pag->RutaPlantilla(); 05824 Parser parser(aux.toStdString(), this); 05825 std::vector<ticpp::Element*> areas; 05826 05827 parser.find("area_imagen", areas, parser.find("areas_imagen")); 05828 ticpp::Element* element=parser.root(); 05829 std::string mascara=parser.get_attribute("mascara", element); 05830 if(mascara!="no"){ 05831 QString ruta=QString::fromStdString(mascara); 05832 pag->activarMascara(ruta); 05833 } 05834 for(std::vector<ticpp::Element*>::iterator i = areas.begin(); i != areas.end(); i++){ 05835 05836 QString ruta; 05837 int w, h, x, y; 05838 05839 try{ 05840 if(contadorAuxiliar < a->GetVectorImagenes().size()){ 05841 ruta=a->GetVectorImagenes().at(contadorAuxiliar).ruta; 05842 std::string pos; 05843 parser.get_attribute("w", *i, &w); 05844 parser.get_attribute("h", *i, &h); 05845 parser.get_attribute("pos_x", *i, &x); 05846 parser.get_attribute("pos_y", *i, &y); 05847 pos=parser.get_attribute("pos", *i); 05848 pag->LoadFoto(ruta, w*(this->controlador->getWVisorAlbum())/462, h*(this->controlador->getHVisorAlbum())/321, x*(this->controlador->getWVisorAlbum())/462, y*(this->controlador->getHVisorAlbum())/321, pos); 05849 } 05850 }catch(std::exception& e){ 05851 Error *err=new Error(1, e.what(), this); 05852 err->LanzarDialogo(); 05853 delete err; 05854 exit(1); 05855 } 05856 contadorAuxiliar++; 05857 } 05858 05859 if(DialogoPaginasPersonalizadas->EscritoOno1()){ 05860 05861 pag->LoadNumTextos(1); 05862 Parser parser2(pag->RutaPlantilla().toStdString(), this); 05863 std::vector<ticpp::Element*> areas2; 05864 parser2.find("area_texto", areas2, parser2.find("areas_texto")); 05865 unsigned contador=0; 05866 05867 if(DialogoPaginasPersonalizadas->TextoColoreadoOno1()){ 05868 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno1(), DialogoPaginasPersonalizadas->NegritaOno1(), DialogoPaginasPersonalizadas->SubrayadoOno1(), DialogoPaginasPersonalizadas->Texto1(), DialogoPaginasPersonalizadas->Fuente1(), DialogoPaginasPersonalizadas->Color1()); 05869 }else{ 05870 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno1(), DialogoPaginasPersonalizadas->NegritaOno1(), DialogoPaginasPersonalizadas->SubrayadoOno1(), DialogoPaginasPersonalizadas->Texto1(), DialogoPaginasPersonalizadas->Fuente1()); 05871 } 05872 05873 if(DialogoPaginasPersonalizadas->EscritoOno2()){ 05874 05875 pag->LoadNumTextos(2); 05876 05877 if(DialogoPaginasPersonalizadas->TextoColoreadoOno2()){ 05878 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno2(), DialogoPaginasPersonalizadas->NegritaOno2(), DialogoPaginasPersonalizadas->SubrayadoOno2(), DialogoPaginasPersonalizadas->Texto2(), DialogoPaginasPersonalizadas->Fuente2(), DialogoPaginasPersonalizadas->Color2()); 05879 }else{ 05880 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno2(), DialogoPaginasPersonalizadas->NegritaOno2(), DialogoPaginasPersonalizadas->SubrayadoOno2(), DialogoPaginasPersonalizadas->Texto2(), DialogoPaginasPersonalizadas->Fuente2()); 05881 } 05882 05883 if(DialogoPaginasPersonalizadas->EscritoOno3()){ 05884 05885 pag->LoadNumTextos(3); 05886 05887 if(DialogoPaginasPersonalizadas->TextoColoreadoOno3()){ 05888 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno3(), DialogoPaginasPersonalizadas->NegritaOno3(), DialogoPaginasPersonalizadas->SubrayadoOno3(), DialogoPaginasPersonalizadas->Texto3(), DialogoPaginasPersonalizadas->Fuente3(), DialogoPaginasPersonalizadas->Color3()); 05889 }else{ 05890 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno3(), DialogoPaginasPersonalizadas->NegritaOno3(), DialogoPaginasPersonalizadas->SubrayadoOno3(), DialogoPaginasPersonalizadas->Texto3(), DialogoPaginasPersonalizadas->Fuente3()); 05891 } 05892 05893 if(DialogoPaginasPersonalizadas->EscritoOno4()){ 05894 pag->LoadNumTextos(4); 05895 05896 if(DialogoPaginasPersonalizadas->TextoColoreadoOno4()){ 05897 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno4(), DialogoPaginasPersonalizadas->NegritaOno4(), DialogoPaginasPersonalizadas->SubrayadoOno4(), DialogoPaginasPersonalizadas->Texto4(), DialogoPaginasPersonalizadas->Fuente4(), DialogoPaginasPersonalizadas->Color4()); 05898 }else{ 05899 pag->LoadTexto(DialogoPaginasPersonalizadas->CursivaOno4(), DialogoPaginasPersonalizadas->NegritaOno4(), DialogoPaginasPersonalizadas->SubrayadoOno4(), DialogoPaginasPersonalizadas->Texto4(), DialogoPaginasPersonalizadas->Fuente4()); 05900 } 05901 05902 } 05903 } 05904 } 05905 for(std::vector<ticpp::Element*>::iterator i2 = areas2.begin(); i2 != areas2.end(); i2++){ 05906 int w, pt, x, y; 05907 std::string cen, ver; 05908 parser2.get_attribute("w", *i2, &w); 05909 parser2.get_attribute("pt", *i2, &pt); 05910 parser2.get_attribute("pos_x", *i2, &x); 05911 parser2.get_attribute("pos_y", *i2, &y); 05912 cen = parser2.get_attribute("centrado", *i2); 05913 ver = parser2.get_attribute("orientacion", *i2); 05914 05915 pag->LoadTextoResto(contador,w*(this->controlador->getWVisorAlbum())/462,pt*(this->controlador->getWVisorAlbum())/462,x*(this->controlador->getWVisorAlbum())/462,y*(this->controlador->getHVisorAlbum())/321,ver,cen); 05916 contador++; 05917 05918 } 05919 } 05920 05921 contador++; 05922 contador++; 05923 fotosRestantes=DialogoPaginasPersonalizadas->GetFotosRestantes(); 05924 05925 a->paginas.push_back(pag); 05926 }else{ 05927 a->ResetImagenes(); 05928 for(unsigned eliminador=0; eliminador < this->a->paginas.size(); eliminador++){ 05929 delete this->a->paginas.at(eliminador); 05930 } 05931 a->paginas.clear(); 05932 fotosRestantes=0; 05933 estado=false; 05934 } 05935 delete DialogoPaginasPersonalizadas; 05936 } 05937 ui->pushPagSiguiente->show(); 05938 ui->pushPagAnterior->show(); 05939 if(this->IndicePaginas==0){ 05940 ui->pushPagAnterior->setDisabled(true); 05941 ui->action_Retroceder_p_gina->setDisabled(true); 05942 ui->actionRetrocederBoton->setDisabled(true); 05943 } 05944 return estado; 05945 } 05946 05947 void FormPrincipal::CreacionPaginasAleatorias(){ 05948 unsigned contad=0; 05949 05950 while(contad<a->GetVectorImagenes().size()){ 05951 int numfotosporpag; 05952 QString file; 05953 if((a->GetVectorImagenes().size() - contad)<=4){ 05954 file= this->GetPlantillaAleatoria((a->GetVectorImagenes().size() - contad)); 05955 }else{ 05956 file= this->GetPlantillaAleatoria(); 05957 } 05958 Parser parser(file.toStdString(), this); 05959 ticpp::Element* element = parser.root(); 05960 parser.get_attribute("imagen", element, &numfotosporpag); 05961 05962 Pagina *pag; 05963 try{ 05964 pag=new Pagina(0,0,this); 05965 }catch(std::exception& e){ 05966 Error *err=new Error(2, e.what(), this); 05967 err->LanzarDialogo(); 05968 delete err; 05969 exit(1); 05970 } 05971 pag->LoadRutaPlantilla(file); 05972 std::vector<ticpp::Element*> areas; 05973 std::string mascara=parser.get_attribute("mascara", element); 05974 if(mascara!="no"){ 05975 QString ruta=QString::fromStdString(mascara); 05976 pag->activarMascara(ruta); 05977 } 05978 parser.find("area_imagen", areas, parser.find("areas_imagen")); 05979 for(std::vector<ticpp::Element*>::iterator i = areas.begin(); i != areas.end(); i++){ 05980 QString ruta; 05981 int w, h, x, y; 05982 05983 05984 try{ 05985 if(contad < a->GetVectorImagenes().size()){ 05986 std::string pos; 05987 ruta=a->GetVectorImagenes().at(contad).ruta; 05988 parser.get_attribute("w", *i, &w); 05989 parser.get_attribute("h", *i, &h); 05990 parser.get_attribute("pos_x", *i, &x); 05991 parser.get_attribute("pos_y", *i, &y); 05992 pos=parser.get_attribute("pos", *i); 05993 pag->LoadFoto(ruta, w*(this->controlador->getWVisorAlbum())/462, h*(this->controlador->getHVisorAlbum())/321, x*(this->controlador->getWVisorAlbum())/462, y*(this->controlador->getHVisorAlbum())/321, pos); 05994 } 05995 }catch(std::exception& e){ 05996 Error *err=new Error(2, e.what(), this); 05997 err->LanzarDialogo(); 05998 delete err; 05999 exit(1); 06000 } 06001 contad++; 06002 } 06003 pag->LoadFondoColor(this->GetColorAleatorio()); 06004 pag->ActivarColordefondo(); 06005 a->paginas.push_back(pag); 06006 06007 } 06008 ui->pushPagSiguiente->show(); 06009 ui->pushPagAnterior->show(); 06010 if(this->IndicePaginas==0){ 06011 ui->pushPagAnterior->setDisabled(true); 06012 ui->action_Retroceder_p_gina->setDisabled(true); 06013 ui->actionRetrocederBoton->setDisabled(true); 06014 } 06015 06016 06017 } 06018 06019 06020 void FormPrincipal::CreacionPaginasFijas(QString file, QColor colorfondo){ 06021 06022 int numfotosporpag; 06023 Parser parser(file.toStdString(), this); 06024 ticpp::Element* element = parser.root(); 06025 parser.get_attribute("imagen", element, &numfotosporpag); 06026 unsigned contad=0; 06027 06028 while(contad<a->GetVectorImagenes().size()){ 06029 Pagina *pag; 06030 try{ 06031 pag=new Pagina(0,0,this); 06032 }catch(std::exception& e){ 06033 Error *err=new Error(2, e.what(), this); 06034 err->LanzarDialogo(); 06035 delete err; 06036 exit(1); 06037 } 06038 std::vector<ticpp::Element*> areas; 06039 std::string mascara=parser.get_attribute("mascara", element); 06040 if(mascara!="no"){ 06041 QString ruta=QString::fromStdString(mascara); 06042 pag->activarMascara(ruta); 06043 } 06044 parser.find("area_imagen", areas, parser.find("areas_imagen")); 06045 for(std::vector<ticpp::Element*>::iterator i = areas.begin(); i != areas.end(); i++){ 06046 QString ruta; 06047 int w, h, x, y; 06048 06049 06050 try{ 06051 if(contad < a->GetVectorImagenes().size()){ 06052 std::string pos; 06053 ruta=a->GetVectorImagenes().at(contad).ruta; 06054 parser.get_attribute("w", *i, &w); 06055 parser.get_attribute("h", *i, &h); 06056 parser.get_attribute("pos_x", *i, &x); 06057 parser.get_attribute("pos_y", *i, &y); 06058 pos=parser.get_attribute("pos", *i); 06059 pag->LoadFoto(ruta, w*(this->controlador->getWVisorAlbum())/462, h*(this->controlador->getHVisorAlbum())/321, x*(this->controlador->getWVisorAlbum())/462, y*(this->controlador->getHVisorAlbum())/321, pos); 06060 06061 } 06062 }catch(std::exception& e){ 06063 Error *err=new Error(1, e.what(), this); 06064 err->LanzarDialogo(); 06065 delete err; 06066 exit(1); 06067 } 06068 contad++; 06069 } 06070 06071 pag->LoadFondoColor(colorfondo); 06072 pag->ActivarColordefondo(); 06073 06074 06075 a->paginas.push_back(pag); 06076 06077 } 06078 ui->pushPagSiguiente->show(); 06079 ui->pushPagAnterior->show(); 06080 if(this->IndicePaginas==0){ 06081 ui->pushPagAnterior->setDisabled(true); 06082 ui->action_Retroceder_p_gina->setDisabled(true); 06083 ui->actionRetrocederBoton->setDisabled(true); 06084 } 06085 06086 06087 } 06088 06089 void FormPrincipal::MostrarBarraHerramientas(){ 06090 if(this->ui->actionBarraHerramientas->isChecked()){ 06091 this->ui->toolBar->show(); 06092 //Submenu 06093 this->ui->actionArchivo->setEnabled(true); 06094 this->ui->actionEdicion->setEnabled(true); 06095 this->ui->actionEliminacion->setEnabled(true); 06096 this->ui->actionExportacion->setEnabled(true); 06097 this->ui->actionGuardado->setEnabled(true); 06098 this->ui->actionImagenes->setEnabled(true); 06099 this->ui->actionPaginas->setEnabled(true); 06100 this->ui->actionPropiedades->setEnabled(true); 06101 06102 }else{ 06103 this->ui->toolBar->hide(); 06104 //Submenu 06105 this->ui->actionArchivo->setDisabled(true); 06106 this->ui->actionEdicion->setDisabled(true); 06107 this->ui->actionEliminacion->setDisabled(true); 06108 this->ui->actionExportacion->setDisabled(true); 06109 this->ui->actionGuardado->setDisabled(true); 06110 this->ui->actionImagenes->setDisabled(true); 06111 this->ui->actionPaginas->setDisabled(true); 06112 this->ui->actionPropiedades->setDisabled(true); 06113 06114 } 06115 } 06116 06117 06118 06119 void FormPrincipal::MostrarBarraArchivo(){ 06120 if(this->ui->actionArchivo->isChecked()){ 06121 this->ui->toolBar->show(); 06122 this->ui->actionAbrirBoton->setVisible(true); 06123 this->ui->actionNuevoBoton->setVisible(true); 06124 this->ui->actionWizardBoton->setVisible(true); 06125 this->ui->toolBar->actions().at(3)->setVisible(true); 06126 }else{ 06127 this->ui->actionAbrirBoton->setVisible(false); 06128 this->ui->actionNuevoBoton->setVisible(false); 06129 this->ui->actionWizardBoton->setVisible(false); 06130 this->ui->toolBar->actions().at(3)->setVisible(false); 06131 } 06132 bool vigilante=false; 06133 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06134 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06135 vigilante=true; 06136 } 06137 } 06138 if(!vigilante){ 06139 this->ui->toolBar->hide(); 06140 this->ui->actionBarraHerramientas->setChecked(false); 06141 this->ui->actionArchivo->setDisabled(true); 06142 this->ui->actionEdicion->setDisabled(true); 06143 this->ui->actionEliminacion->setDisabled(true); 06144 this->ui->actionExportacion->setDisabled(true); 06145 this->ui->actionGuardado->setDisabled(true); 06146 this->ui->actionImagenes->setDisabled(true); 06147 this->ui->actionPaginas->setDisabled(true); 06148 this->ui->actionPropiedades->setDisabled(true); 06149 } 06150 } 06151 06152 void FormPrincipal::MostrarBarraEdicion(){ 06153 if(this->ui->actionEdicion->isChecked()){ 06154 this->ui->toolBar->show(); 06155 this->ui->actionEditarBoton->setVisible(true); 06156 this->ui->actionTerminarBoton->setVisible(true); 06157 this->ui->actionEditarTamBoton->setVisible(true); 06158 this->ui->toolBar->actions().at(16)->setVisible(true); 06159 }else{ 06160 this->ui->actionEditarBoton->setVisible(false); 06161 this->ui->actionTerminarBoton->setVisible(false); 06162 this->ui->actionEditarTamBoton->setVisible(false); 06163 this->ui->toolBar->actions().at(16)->setVisible(false); 06164 } 06165 bool vigilante=false; 06166 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06167 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06168 vigilante=true; 06169 } 06170 } 06171 if(!vigilante){ 06172 this->ui->toolBar->hide(); 06173 this->ui->actionBarraHerramientas->setChecked(false); 06174 this->ui->actionArchivo->setDisabled(true); 06175 this->ui->actionEdicion->setDisabled(true); 06176 this->ui->actionEliminacion->setDisabled(true); 06177 this->ui->actionExportacion->setDisabled(true); 06178 this->ui->actionGuardado->setDisabled(true); 06179 this->ui->actionImagenes->setDisabled(true); 06180 this->ui->actionPaginas->setDisabled(true); 06181 this->ui->actionPropiedades->setDisabled(true); 06182 } 06183 } 06184 06185 void FormPrincipal::MostrarBarraEliminacion(){ 06186 if(this->ui->actionEliminacion->isChecked()){ 06187 this->ui->toolBar->show(); 06188 this->ui->actionBorrarBoton->setVisible(true); 06189 this->ui->toolBar->actions().at(12)->setVisible(true); 06190 }else{ 06191 this->ui->actionBorrarBoton->setVisible(false); 06192 this->ui->toolBar->actions().at(12)->setVisible(false); 06193 } 06194 bool vigilante=false; 06195 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06196 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06197 vigilante=true; 06198 } 06199 } 06200 if(!vigilante){ 06201 this->ui->toolBar->hide(); 06202 this->ui->actionBarraHerramientas->setChecked(false); 06203 this->ui->actionArchivo->setDisabled(true); 06204 this->ui->actionEdicion->setDisabled(true); 06205 this->ui->actionEliminacion->setDisabled(true); 06206 this->ui->actionExportacion->setDisabled(true); 06207 this->ui->actionGuardado->setDisabled(true); 06208 this->ui->actionImagenes->setDisabled(true); 06209 this->ui->actionPaginas->setDisabled(true); 06210 this->ui->actionPropiedades->setDisabled(true); 06211 } 06212 } 06213 06214 void FormPrincipal::MostrarBarraExportacion(){ 06215 if(this->ui->actionExportacion->isChecked()){ 06216 this->ui->toolBar->show(); 06217 this->ui->actionExportarJPGBoton->setVisible(true); 06218 this->ui->actionExportarPDFBoton->setVisible(true); 06219 this->ui->actionImprimirBoton->setVisible(true); 06220 this->ui->toolBar->actions().at(10)->setVisible(true); 06221 }else{ 06222 this->ui->actionExportarJPGBoton->setVisible(false); 06223 this->ui->actionExportarPDFBoton->setVisible(false); 06224 this->ui->actionImprimirBoton->setVisible(false); 06225 this->ui->toolBar->actions().at(10)->setVisible(false); 06226 } 06227 bool vigilante=false; 06228 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06229 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06230 vigilante=true; 06231 } 06232 } 06233 if(!vigilante){ 06234 this->ui->toolBar->hide(); 06235 this->ui->actionBarraHerramientas->setChecked(false); 06236 this->ui->actionArchivo->setDisabled(true); 06237 this->ui->actionEdicion->setDisabled(true); 06238 this->ui->actionEliminacion->setDisabled(true); 06239 this->ui->actionExportacion->setDisabled(true); 06240 this->ui->actionGuardado->setDisabled(true); 06241 this->ui->actionImagenes->setDisabled(true); 06242 this->ui->actionPaginas->setDisabled(true); 06243 this->ui->actionPropiedades->setDisabled(true); 06244 } 06245 } 06246 06247 void FormPrincipal::MostrarBarraGuardado(){ 06248 if(this->ui->actionGuardado->isChecked()){ 06249 this->ui->toolBar->show(); 06250 this->ui->actionGuardarBoton->setVisible(true); 06251 this->ui->actionGuardarComoBoton->setVisible(true); 06252 this->ui->toolBar->actions().at(6)->setVisible(true); 06253 }else{ 06254 this->ui->actionGuardarBoton->setVisible(false); 06255 this->ui->actionGuardarComoBoton->setVisible(false); 06256 this->ui->toolBar->actions().at(6)->setVisible(false); 06257 } 06258 bool vigilante=false; 06259 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06260 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06261 vigilante=true; 06262 } 06263 } 06264 if(!vigilante){ 06265 this->ui->toolBar->hide(); 06266 this->ui->actionBarraHerramientas->setChecked(false); 06267 this->ui->actionArchivo->setDisabled(true); 06268 this->ui->actionEdicion->setDisabled(true); 06269 this->ui->actionEliminacion->setDisabled(true); 06270 this->ui->actionExportacion->setDisabled(true); 06271 this->ui->actionGuardado->setDisabled(true); 06272 this->ui->actionImagenes->setDisabled(true); 06273 this->ui->actionPaginas->setDisabled(true); 06274 this->ui->actionPropiedades->setDisabled(true); 06275 } 06276 } 06277 06278 void FormPrincipal::MostrarBarraImagenes(){ 06279 if(this->ui->actionImagenes->isChecked()){ 06280 this->ui->toolBar->show(); 06281 this->ui->actionAnnadirBoton->setVisible(true); 06282 this->ui->actionSeleccionarTodoBoton->setVisible(true); 06283 this->ui->actionDeseleccionarTodoBoton->setVisible(true); 06284 this->ui->actionEliminarFotosBoton->setVisible(true); 06285 this->ui->toolBar->actions().at(21)->setVisible(true); 06286 }else{ 06287 this->ui->actionAnnadirBoton->setVisible(false); 06288 this->ui->actionSeleccionarTodoBoton->setVisible(false); 06289 this->ui->actionDeseleccionarTodoBoton->setVisible(false); 06290 this->ui->actionEliminarFotosBoton->setVisible(false); 06291 this->ui->toolBar->actions().at(21)->setVisible(false); 06292 } 06293 bool vigilante=false; 06294 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06295 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06296 vigilante=true; 06297 } 06298 } 06299 if(!vigilante){ 06300 this->ui->toolBar->hide(); 06301 this->ui->actionBarraHerramientas->setChecked(false); 06302 this->ui->actionArchivo->setDisabled(true); 06303 this->ui->actionEdicion->setDisabled(true); 06304 this->ui->actionEliminacion->setDisabled(true); 06305 this->ui->actionExportacion->setDisabled(true); 06306 this->ui->actionGuardado->setDisabled(true); 06307 this->ui->actionImagenes->setDisabled(true); 06308 this->ui->actionPaginas->setDisabled(true); 06309 this->ui->actionPropiedades->setDisabled(true); 06310 } 06311 } 06312 06313 void FormPrincipal::MostrarBarraPaginas(){ 06314 if(this->ui->actionPaginas->isChecked()){ 06315 this->ui->toolBar->show(); 06316 this->ui->actionAvanzarBoton->setVisible(true); 06317 this->ui->actionRetrocederBoton->setVisible(true); 06318 this->ui->toolBar->actions().at(26)->setVisible(true); 06319 }else{ 06320 this->ui->actionAvanzarBoton->setVisible(false); 06321 this->ui->actionRetrocederBoton->setVisible(false); 06322 this->ui->toolBar->actions().at(26)->setVisible(false); 06323 } 06324 bool vigilante=false; 06325 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06326 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06327 vigilante=true; 06328 } 06329 } 06330 if(!vigilante){ 06331 this->ui->toolBar->hide(); 06332 this->ui->actionBarraHerramientas->setChecked(false); 06333 this->ui->actionArchivo->setDisabled(true); 06334 this->ui->actionEdicion->setDisabled(true); 06335 this->ui->actionEliminacion->setDisabled(true); 06336 this->ui->actionExportacion->setDisabled(true); 06337 this->ui->actionGuardado->setDisabled(true); 06338 this->ui->actionImagenes->setDisabled(true); 06339 this->ui->actionPaginas->setDisabled(true); 06340 this->ui->actionPropiedades->setDisabled(true); 06341 } 06342 } 06343 06344 void FormPrincipal::MostrarBarraPropiedades(){ 06345 if(this->ui->actionPropiedades->isChecked()){ 06346 this->ui->toolBar->show(); 06347 this->ui->actionPropiedadesBoton->setVisible(true); 06348 this->ui->toolBar->actions().at(23)->setVisible(true); 06349 }else{ 06350 this->ui->actionPropiedadesBoton->setVisible(false); 06351 this->ui->toolBar->actions().at(23)->setVisible(false); 06352 } 06353 bool vigilante=false; 06354 for(int i=0; i <this->ui->toolBar->actions().size(); i++){ 06355 if(this->ui->toolBar->actions().at(i)->isVisible()){ 06356 vigilante=true; 06357 } 06358 } 06359 if(!vigilante){ 06360 this->ui->toolBar->hide(); 06361 this->ui->actionBarraHerramientas->setChecked(false); 06362 this->ui->actionArchivo->setDisabled(true); 06363 this->ui->actionEdicion->setDisabled(true); 06364 this->ui->actionEliminacion->setDisabled(true); 06365 this->ui->actionExportacion->setDisabled(true); 06366 this->ui->actionGuardado->setDisabled(true); 06367 this->ui->actionImagenes->setDisabled(true); 06368 this->ui->actionPaginas->setDisabled(true); 06369 this->ui->actionPropiedades->setDisabled(true); 06370 } 06371 } 06372 06373 06374 void FormPrincipal::MostrarPaginaAnterior(){ 06375 IndicePaginas--; 06376 06377 ui->pushPagSiguiente->setEnabled(true); 06378 ui->action_Avanzar_P_gina->setEnabled(true); 06379 ui->actionAvanzarBoton->setEnabled(true); 06380 if(IndicePaginas==0){ 06381 this->mostrandosePaginaActualmente=false; 06382 ui->pushButtonEditarPagina->hide(); 06383 ui->pushButtonTerminarPagina->hide(); 06384 ui->pushButtonEditar->show(); 06385 ui->pushButtonEditar->setEnabled(true); 06386 ui->pushButtonTerminar->show(); 06387 ui->pushPagAnterior->setDisabled(true); 06388 ui->action_Retroceder_p_gina->setDisabled(true); 06389 ui->actionRetrocederBoton->setDisabled(true); 06390 Parser par(this->a->portada->RutaPlantilla().toStdString(), this); 06391 ticpp::Element* element=par.root(); 06392 std::string resultado=par.get_attribute("editable", element); 06393 if(resultado=="No"){ 06394 this->ui->pushButtonEditar->setDisabled(true); 06395 06396 } 06397 //Cargar portada 06398 QGraphicsView *copia; 06399 try{ 06400 copia=new QGraphicsView(a->portada->versionReducida); 06401 }catch(std::exception& e){ 06402 Error *err=new Error(2, e.what(), this); 06403 err->LanzarDialogo(); 06404 delete err; 06405 exit(1); 06406 } 06407 copia=a->portada->versionReducida; 06408 ui->visorAlbum->setScene(copia->scene()); 06409 }else{ 06410 IndicePaginas--; 06411 06412 QGraphicsView *copia; 06413 try{ 06414 copia=new QGraphicsView(a->GetPagina(IndicePaginas)->versionReducida); 06415 }catch(std::exception& e){ 06416 Error *err=new Error(2, e.what(), this); 06417 err->LanzarDialogo(); 06418 delete err; 06419 exit(1); 06420 } 06421 copia=a->GetPagina(IndicePaginas)->versionReducida; 06422 ui->visorAlbum->setScene(copia->scene()); 06423 Parser par(this->a->paginas[IndicePaginas]->RutaPlantilla().toStdString(), this); 06424 ticpp::Element* element=par.root(); 06425 std::string resultado=par.get_attribute("editable", element); 06426 if(resultado=="No"){ 06427 ui->pushButtonEditarPagina->setDisabled(true); 06428 }else{ 06429 ui->pushButtonEditarPagina->setEnabled(true); 06430 } 06431 this->IndicePaginas++; 06432 } 06433 06434 } 06435 06436 void FormPrincipal::GenerarPaginasPersonalizadas(){ 06437 try{ 06438 for(unsigned indice=0; indice < a->paginas.size(); indice++){ 06439 06440 a->paginas[indice]->versionReducida->setFixedSize((this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06441 QGraphicsScene *escena = new QGraphicsScene(0, 0, (this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06442 a->paginas[indice]->versionReducida->setScene(escena); 06443 06444 06445 a->paginas[indice]->LoadDimensiones(this->dimensionHpagina, this->dimensionWpagina); 06446 06447 06448 if(a->GetPagina(indice)->ColordeFondo()){ 06449 if(!this->a->GetPagina(indice)->activadaMascara()){ 06450 QBrush *wall= new QBrush(a->GetPagina(indice)->GetFondoColor()); 06451 a->paginas[indice]->versionReducida->scene()->setBackgroundBrush(*wall); 06452 delete wall; 06453 } 06454 }else{ 06455 if((!(a->GetPagina(indice)->ColordeFondo())) && (!this->a->GetPagina(indice)->activadaMascara())){ 06456 QPixmap *g; 06457 g=new QPixmap(a->GetPagina(indice)->GetFondoImagen()); 06458 try{ 06459 if(g->isNull()){ 06460 throw std::ios_base::failure(tr("No se pudo abrir la imagen de fondo de una de las páginas.").toStdString()); 06461 } 06462 }catch(std::exception& e){ 06463 Error *err=new Error(4, e.what(), this); 06464 err->LanzarDialogo(); 06465 delete err; 06466 exit(1); 06467 } 06468 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06469 item->setPos(0, 0); 06470 item->setAcceptHoverEvents(false); 06471 a->paginas[indice]->versionReducida->scene()->addItem(item); 06472 a->paginas[indice]->versionReducida->setDragMode(QGraphicsView::RubberBandDrag); 06473 delete g; 06474 } 06475 } 06476 06477 06478 06479 //For para introducir las imágenes 06480 for(unsigned c=0; c< a->GetPagina(indice)->GetVectorImagenes().size(); c++){ 06481 QPixmap *h; 06482 h=new QPixmap(a->GetPagina(indice)->GetVectorImagenes().at(c).ruta); 06483 try{ 06484 if(h->isNull()){ 06485 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 06486 } 06487 }catch(std::exception& e){ 06488 Error *err=new Error(4, e.what(), this); 06489 err->LanzarDialogo(); 06490 delete err; 06491 exit(1); 06492 } 06493 QGraphicsPixmapItem *item2; 06494 if(h->width() > h->height()){ 06495 if(this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06496 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06497 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06498 06499 item2->setRotation(90); 06500 item2->setAcceptTouchEvents(true); 06501 }else{ 06502 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06503 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06504 06505 } 06506 }else{ 06507 if(!this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06508 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06509 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06510 06511 item2->setRotation(90); 06512 item2->setAcceptTouchEvents(true); 06513 }else{ 06514 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06515 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06516 06517 } 06518 } 06519 if(!this->a->GetPagina(indice)->activadaMascara()){ 06520 item2->setAcceptHoverEvents(true); 06521 } 06522 a->paginas[indice]->versionReducida->scene()->addItem(item2); 06523 delete h; 06524 } 06525 06526 06527 if(this->a->GetPagina(indice)->activadaMascara() && this->a->GetPagina(indice)->ColordeFondo()){ 06528 06529 06530 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(indice)->getMascara(); 06531 QImage *img=new QImage(path); 06532 QRgb color=this->a->GetPagina(indice)->GetFondoColor().rgb(); 06533 for(int z=0; z < img->width(); z++){ 06534 for(int b=0; b < img->height(); b++){ 06535 if(img->pixel(z,b)!=0){ 06536 img->setPixel(z,b,color); 06537 } 06538 } 06539 } 06540 QPixmap *g=new QPixmap(); 06541 g->convertFromImage(*img, Qt::AutoColor); 06542 06543 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06544 item->setPos(0, 0); 06545 item->setAcceptHoverEvents(false); 06546 a->paginas[indice]->versionReducida->scene()->addItem(item); 06547 delete img; 06548 delete g; 06549 } 06550 06551 if(this->a->GetPagina(indice)->activadaMascara() && !this->a->GetPagina(indice)->ColordeFondo()){ 06552 06553 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(indice)->getMascara(); 06554 QImage *mascara=new QImage(path); 06555 QImage *imgFondo=new QImage(this->a->GetPagina(indice)->GetFondoImagen()); 06556 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 06557 06558 for(int z=0; z < imgFinal.width(); z++){ 06559 for(int b=0; b < imgFinal.height(); b++){ 06560 if(imgFinal.pixel(z,b)!=0){ 06561 imgFinal.setPixel(z,b,imgFondo->pixel(z,b)); 06562 } 06563 } 06564 } 06565 QPixmap *g=new QPixmap(); 06566 06567 g->convertFromImage(imgFinal, Qt::AutoColor); 06568 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06569 item->setPos(0, 0); 06570 item->setAcceptHoverEvents(false); 06571 a->paginas[indice]->versionReducida->scene()->addItem(item); 06572 a->paginas[indice]->versionReducida->setDragMode(QGraphicsView::RubberBandDrag); 06573 delete mascara; 06574 delete imgFondo; 06575 delete g; 06576 } 06577 06578 //For para introducir los textos 06579 06580 for(unsigned d=0; d<a->GetPagina(indice)->GetVectorTextos().size(); d++){ 06581 if(a->GetPagina(indice)->GetNumTextos()!=0){ 06582 QGraphicsTextItem *TF=new QGraphicsTextItem(a->GetPagina(indice)->GetVectorTextos().at(d).texto); 06583 QFont *fuenteF=new QFont(a->GetPagina(indice)->GetVectorTextos().at(d).fuente.family(), a->GetPagina(indice)->GetVectorTextos().at(d).puntos, 50, a->GetPagina(indice)->GetVectorTextos().at(d).cursiva); 06584 06585 if(a->GetPagina(indice)->GetVectorTextos().at(d).negrita){ 06586 fuenteF->setBold(true); 06587 } 06588 06589 if(a->GetPagina(indice)->GetVectorTextos().at(d).subrayado){ 06590 fuenteF->setUnderline(true); 06591 } 06592 06593 TF->setDefaultTextColor(a->GetPagina(indice)->GetVectorTextos().at(d).color); 06594 TF->setFont(*fuenteF); 06595 06596 TF->setTextWidth(a->GetPagina(indice)->GetVectorTextos().at(d).w); 06597 06598 if(a->GetPagina(indice)->GetVectorTextos().at(d).vertical){ 06599 TF->setRotation(90); 06600 } 06601 06602 TF->setPos(a->GetPagina(indice)->GetVectorTextos().at(d).pos_x, a->GetPagina(indice)->GetVectorTextos().at(d).pos_y); 06603 06604 if(a->GetPagina(indice)->GetVectorTextos().at(d).centrado){ 06605 // Para centrar el texto 06606 QTextCursor cursor = TF->textCursor(); 06607 QTextBlockFormat bfmt = cursor.blockFormat(); 06608 bfmt.setAlignment(Qt::AlignCenter); 06609 cursor.setBlockFormat(bfmt); 06610 TF->setTextCursor(cursor); 06611 } 06612 06613 TF->setAcceptHoverEvents(true); 06614 a->paginas[indice]->versionReducida->scene()->addItem(TF); 06615 delete fuenteF; 06616 } 06617 06618 } 06619 06620 //Ahora introducimos los marcos, si es que los hay 06621 if(a->paginas[indice]->ContieneMarcos()){ 06622 for(int contadorMarcos=0; contadorMarcos < a->paginas[indice]->getMarcos().size(); contadorMarcos++){ 06623 if(!a->paginas[indice]->getMarcos().at(contadorMarcos).nombre->isEmpty()){ 06624 QPixmap *h; 06625 QString marcoName=this->directoriodetrabajo.absolutePath() + "/frames/"; 06626 marcoName.append(a->paginas[indice]->getMarcos().at(contadorMarcos).nombre); 06627 h=new QPixmap(marcoName); 06628 06629 try{ 06630 if(h->isNull()){ 06631 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 06632 } 06633 }catch(std::exception& e){ 06634 Error *err=new Error(4, e.what(), this); 06635 err->LanzarDialogo(); 06636 delete err; 06637 exit(1); 06638 } 06639 QGraphicsPixmapItem *item2; 06640 int numeroFoto=a->paginas[indice]->getMarcos().at(contadorMarcos).idFoto; 06641 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(numeroFoto-1).w, a->GetPagina(indice)->GetVectorImagenes().at(numeroFoto-1).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06642 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(numeroFoto-1).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(numeroFoto-1).pos_y); 06643 06644 item2->setAcceptHoverEvents(true); 06645 a->paginas[indice]->versionReducida->scene()->addItem(item2); 06646 delete h; 06647 } 06648 } 06649 } 06650 a->paginas[indice]->setObjetosPagina(a->paginas[indice]->versionReducida->items()); 06651 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 06652 a->paginas[indice]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 06653 } 06654 06655 06656 } 06657 }catch(std::exception& e){ 06658 Error *err=new Error(1, e.what(), this); 06659 err->LanzarDialogo(); 06660 delete err; 06661 exit(1); 06662 } 06663 06664 // Aquí activamos la exportación 06665 06666 ui->actionE_xportar->setEnabled(true); 06667 ui->actionExportarJPGBoton->setEnabled(true); 06668 ui->actionExportarPDFBoton->setEnabled(true); 06669 ui->actionI_mprimir->setEnabled(true); 06670 ui->actionImprimirBoton->setEnabled(true); 06671 06672 } 06673 06674 06675 void FormPrincipal::GenerarPaginasAleatorias(){ 06676 //Mediante un For vamos generando cada una da las páginas 06677 try{ 06678 for(unsigned indice=0; indice < a->paginas.size(); indice++){ 06679 06680 a->paginas[indice]->versionReducida->setFixedSize((this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06681 QGraphicsScene *escena; 06682 try{ 06683 escena= new QGraphicsScene(0, 0, (this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06684 }catch(std::exception& e){ 06685 Error *err=new Error(2, e.what(), this); 06686 err->LanzarDialogo(); 06687 delete err; 06688 exit(1); 06689 } 06690 a->paginas[indice]->versionReducida->setScene(escena); 06691 06692 06693 a->paginas[indice]->LoadDimensiones(this->dimensionHpagina, this->dimensionWpagina); 06694 06695 06696 if(!a->GetPagina(indice)->activadaMascara()){ 06697 QBrush *wall; 06698 try{ 06699 wall= new QBrush(a->GetPagina(indice)->GetFondoColor()); 06700 }catch(std::exception& e){ 06701 Error *err=new Error(2, e.what(), this); 06702 err->LanzarDialogo(); 06703 delete err; 06704 exit(1); 06705 } 06706 a->paginas[indice]->versionReducida->scene()->setBackgroundBrush(*wall); 06707 delete wall; 06708 } 06709 06710 06711 //For para introducir las imágenes 06712 for(unsigned c=0; c< a->GetPagina(indice)->GetVectorImagenes().size(); c++){ 06713 QPixmap *h; 06714 h=new QPixmap(a->GetPagina(indice)->GetVectorImagenes().at(c).ruta); 06715 try{ 06716 if(h->isNull()){ 06717 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 06718 } 06719 }catch(std::exception& e){ 06720 Error *err=new Error(4, e.what(), this); 06721 err->LanzarDialogo(); 06722 delete err; 06723 exit(1); 06724 } 06725 QGraphicsPixmapItem *item2; 06726 if(h->width() > h->height()){ 06727 if(this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06728 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06729 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06730 06731 item2->setRotation(90); 06732 item2->setAcceptTouchEvents(true); 06733 }else{ 06734 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06735 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06736 06737 } 06738 }else{ 06739 if(!this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06740 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06741 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06742 06743 item2->setRotation(90); 06744 item2->setAcceptTouchEvents(true); 06745 }else{ 06746 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06747 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06748 06749 } 06750 } 06751 if(!this->a->GetPagina(indice)->activadaMascara()){ 06752 item2->setAcceptHoverEvents(true); 06753 } 06754 a->paginas[indice]->versionReducida->scene()->addItem(item2); 06755 delete h; 06756 } 06757 06758 06759 if(this->a->GetPagina(indice)->activadaMascara() && this->a->GetPagina(indice)->ColordeFondo()){ 06760 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(indice)->getMascara(); 06761 QImage *img=new QImage(path); 06762 QRgb color=this->a->GetPagina(indice)->GetFondoColor().rgb(); 06763 for(int z=0; z < img->width(); z++){ 06764 for(int b=0; b < img->height(); b++){ 06765 if(img->pixel(z,b)!=0){ 06766 img->setPixel(z,b,color); 06767 } 06768 } 06769 } 06770 QPixmap *g=new QPixmap(); 06771 g->convertFromImage(*img, Qt::AutoColor); 06772 06773 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06774 item->setPos(0, 0); 06775 item->setAcceptHoverEvents(false); 06776 a->paginas[indice]->versionReducida->scene()->addItem(item); 06777 delete img; 06778 delete g; 06779 } 06780 06781 06782 06783 a->paginas[indice]->setObjetosPagina(a->paginas[indice]->versionReducida->items()); 06784 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 06785 a->paginas[indice]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 06786 } 06787 06788 } 06789 }catch(std::exception& e){ 06790 Error *err=new Error(1, e.what(), this); 06791 err->LanzarDialogo(); 06792 delete err; 06793 exit(1); 06794 } 06795 ui->actionE_xportar->setEnabled(true); 06796 ui->actionExportarJPGBoton->setEnabled(true); 06797 ui->actionExportarPDFBoton->setEnabled(true); 06798 ui->actionI_mprimir->setEnabled(true); 06799 ui->actionImprimirBoton->setEnabled(true); 06800 } 06801 06802 void FormPrincipal::GenerarPaginasFijas(){ 06803 try{ 06804 //Mediante un For vamos generando cada una da las páginas 06805 for(unsigned indice=0; indice < a->paginas.size(); indice++){ 06806 06807 a->paginas[indice]->versionReducida->setFixedSize((this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06808 QGraphicsScene *escena; 06809 try{ 06810 escena= new QGraphicsScene(0, 0, (this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 06811 }catch(std::exception& e){ 06812 Error *err=new Error(2, e.what(), this); 06813 err->LanzarDialogo(); 06814 delete err; 06815 exit(1); 06816 } 06817 a->paginas[indice]->versionReducida->setScene(escena); 06818 06819 06820 a->paginas[indice]->LoadDimensiones(this->dimensionHpagina, this->dimensionWpagina); 06821 06822 if(a->GetPagina(indice)->ColordeFondo() && !this->a->GetPagina(indice)->activadaMascara()){ 06823 QBrush *wall; 06824 try{ 06825 wall= new QBrush(a->GetPagina(indice)->GetFondoColor()); 06826 }catch(std::exception& e){ 06827 Error *err=new Error(2, e.what(), this); 06828 err->LanzarDialogo(); 06829 delete err; 06830 exit(1); 06831 } 06832 a->paginas[indice]->versionReducida->scene()->setBackgroundBrush(*wall); 06833 delete wall; 06834 }else{ 06835 if((!(a->GetPagina(indice)->ColordeFondo())) && (!this->a->GetPagina(indice)->activadaMascara())){ 06836 06837 QPixmap *g; 06838 try{ 06839 g=new QPixmap(a->GetPagina(indice)->GetFondoImagen()); 06840 if(g->isNull()){ 06841 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de una de las páginas.").toStdString()); 06842 } 06843 }catch(std::exception& e){ 06844 Error *err=new Error(4, e.what(), this); 06845 err->LanzarDialogo(); 06846 delete err; 06847 exit(1); 06848 } 06849 QGraphicsPixmapItem *item; 06850 try{ 06851 item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06852 }catch(std::exception& e){ 06853 Error *err=new Error(2, e.what(), this); 06854 err->LanzarDialogo(); 06855 delete err; 06856 exit(1); 06857 } 06858 item->setPos(0, 0); 06859 item->setAcceptHoverEvents(false); 06860 a->paginas[indice]->versionReducida->scene()->addItem(item); 06861 delete g; 06862 } 06863 a->paginas[indice]->versionReducida->setDragMode(QGraphicsView::RubberBandDrag); 06864 } 06865 06866 06867 //For para introducir las imágenes 06868 for(unsigned c=0; c< a->GetPagina(indice)->GetVectorImagenes().size(); c++){ 06869 QPixmap *h; 06870 h=new QPixmap(a->GetPagina(indice)->GetVectorImagenes().at(c).ruta); 06871 try{ 06872 if(h->isNull()){ 06873 throw std::ios::failure(tr("No se pudo abrir una imagen de una de las páginas.").toStdString()); 06874 } 06875 }catch(std::exception& e){ 06876 Error *err=new Error(4, e.what(), this); 06877 err->LanzarDialogo(); 06878 delete err; 06879 exit(1); 06880 } 06881 QGraphicsPixmapItem *item2; 06882 if(h->width() > h->height()){ 06883 if(this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06884 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06885 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06886 06887 item2->setRotation(90); 06888 item2->setAcceptTouchEvents(true); 06889 }else{ 06890 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06891 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06892 06893 } 06894 }else{ 06895 if(!this->a->GetPagina(indice)->getImagenPosVertical(c)){ 06896 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).h, a->GetPagina(indice)->GetVectorImagenes().at(c).w, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06897 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x + a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06898 06899 item2->setRotation(90); 06900 item2->setAcceptTouchEvents(true); 06901 }else{ 06902 item2=new QGraphicsPixmapItem(h->scaled(a->GetPagina(indice)->GetVectorImagenes().at(c).w, a->GetPagina(indice)->GetVectorImagenes().at(c).h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06903 item2->setPos(a->GetPagina(indice)->GetVectorImagenes().at(c).pos_x, a->GetPagina(indice)->GetVectorImagenes().at(c).pos_y); 06904 06905 } 06906 } 06907 if(!this->a->GetPagina(indice)->activadaMascara()){ 06908 06909 item2->setAcceptHoverEvents(true); 06910 } 06911 a->paginas[indice]->versionReducida->scene()->addItem(item2); 06912 delete h; 06913 } 06914 06915 06916 06917 if(this->a->GetPagina(indice)->activadaMascara() && this->a->GetPagina(indice)->ColordeFondo()){ 06918 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(indice)->getMascara(); 06919 QImage *img=new QImage(path); 06920 QRgb color=this->a->GetPagina(indice)->GetFondoColor().rgb(); 06921 for(int z=0; z < img->width(); z++){ 06922 for(int b=0; b < img->height(); b++){ 06923 if(img->pixel(z,b)!=0){ 06924 img->setPixel(z,b,color); 06925 } 06926 } 06927 } 06928 QPixmap *g=new QPixmap(); 06929 g->convertFromImage(*img, Qt::AutoColor); 06930 06931 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06932 item->setPos(0, 0); 06933 item->setAcceptHoverEvents(false); 06934 a->paginas[indice]->versionReducida->scene()->addItem(item); 06935 delete img; 06936 delete g; 06937 } 06938 06939 if(this->a->GetPagina(indice)->activadaMascara() && !this->a->GetPagina(indice)->ColordeFondo()){ 06940 06941 QString path= this->directoriodetrabajo.absolutePath() + "/templates/pages/" + a->GetPagina(indice)->getMascara(); 06942 QImage *mascara=new QImage(path); 06943 QImage *imgFondo=new QImage(this->a->GetPagina(indice)->GetFondoImagen()); 06944 QImage imgFinal=mascara->scaled(imgFondo->width(), imgFondo->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 06945 06946 for(int z=0; z < imgFinal.width(); z++){ 06947 for(int b=0; b < imgFinal.height(); b++){ 06948 if(imgFinal.pixel(z,b)!=0){ 06949 06950 imgFinal.setPixel(z,b,imgFondo->pixel(z,b)); 06951 } 06952 } 06953 } 06954 QPixmap *g=new QPixmap(); 06955 06956 g->convertFromImage(imgFinal, Qt::AutoColor); 06957 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 06958 item->setPos(0, 0); 06959 item->setAcceptHoverEvents(false); 06960 a->paginas[indice]->versionReducida->scene()->addItem(item); 06961 delete mascara; 06962 delete imgFondo; 06963 delete g; 06964 } 06965 06966 06967 //For para poner textos (si es que los hay) 06968 for(unsigned d=0; d<a->GetPagina(indice)->GetVectorTextos().size(); d++){ 06969 if(a->GetPagina(indice)->GetNumTextos()!=0){ 06970 QGraphicsTextItem *TF=new QGraphicsTextItem(a->GetPagina(indice)->GetVectorTextos().at(d).texto); 06971 QFont *fuenteF=new QFont(a->GetPagina(indice)->GetVectorTextos().at(d).fuente.family(), a->GetPagina(indice)->GetVectorTextos().at(d).puntos, 50, a->GetPagina(indice)->GetVectorTextos().at(d).cursiva); 06972 06973 if(a->GetPagina(indice)->GetVectorTextos().at(d).negrita){ 06974 fuenteF->setBold(true); 06975 } 06976 06977 if(a->GetPagina(indice)->GetVectorTextos().at(d).subrayado){ 06978 fuenteF->setUnderline(true); 06979 } 06980 06981 TF->setDefaultTextColor(a->GetPagina(indice)->GetVectorTextos().at(d).color); 06982 TF->setFont(*fuenteF); 06983 TF->setTextWidth(a->GetPagina(indice)->GetVectorTextos().at(d).w); 06984 06985 if(a->GetPagina(indice)->GetVectorTextos().at(d).vertical){ 06986 TF->setRotation(90); 06987 } 06988 06989 TF->setPos(a->GetPagina(indice)->GetVectorTextos().at(d).pos_x, a->GetPagina(indice)->GetVectorTextos().at(d).pos_y); 06990 06991 if(a->GetPagina(indice)->GetVectorTextos().at(d).centrado){ 06992 // Para centrar el texto 06993 QTextCursor cursor = TF->textCursor(); 06994 QTextBlockFormat bfmt = cursor.blockFormat(); 06995 bfmt.setAlignment(Qt::AlignCenter); 06996 cursor.setBlockFormat(bfmt); 06997 TF->setTextCursor(cursor); 06998 } 06999 07000 TF->setAcceptHoverEvents(true); 07001 a->paginas[indice]->versionReducida->scene()->addItem(TF); 07002 delete fuenteF; 07003 } 07004 07005 } 07006 07007 07008 a->paginas[indice]->setObjetosPagina(a->paginas[indice]->versionReducida->items()); 07009 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 07010 a->paginas[indice]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 07011 } 07012 } 07013 }catch(std::exception& e){ 07014 Error *err=new Error(1, e.what(), this); 07015 err->LanzarDialogo(); 07016 delete err; 07017 exit(1); 07018 } 07019 07020 07021 ui->actionE_xportar->setEnabled(true); 07022 ui->actionExportarJPGBoton->setEnabled(true); 07023 ui->actionExportarPDFBoton->setEnabled(true); 07024 ui->actionI_mprimir->setEnabled(true); 07025 ui->actionImprimirBoton->setEnabled(true); 07026 } 07027 07028 void FormPrincipal::terminarEdicionGeneral(){ 07029 if(this->mostrandosePaginaActualmente){ 07030 this->DesactivarEdicionPagina(); 07031 }else{ 07032 this->DesactivarEdicion(); 07033 } 07034 } 07035 07036 void FormPrincipal::edicionGeneral(){ 07037 if(this->mostrandosePaginaActualmente){ 07038 this->ActivarEdicionPagina(); 07039 }else{ 07040 this->ActivarEdicion(); 07041 } 07042 } 07043 07044 void FormPrincipal::MostrarPagina(){ 07045 ui->pushPagAnterior->setEnabled(true); 07046 ui->action_Retroceder_p_gina->setEnabled(true); 07047 ui->actionRetrocederBoton->setEnabled(true); 07048 ui->visorAlbum->resetCachedContent(); 07049 this->mostrandosePaginaActualmente=true; 07050 QGraphicsView *copia; 07051 try{ 07052 copia=new QGraphicsView(a->GetPagina(IndicePaginas)->versionReducida); 07053 }catch(std::exception& e){ 07054 Error *err=new Error(2, e.what(), this); 07055 err->LanzarDialogo(); 07056 delete err; 07057 exit(1); 07058 } 07059 copia=a->GetPagina(IndicePaginas)->versionReducida; 07060 ui->visorAlbum->setScene(copia->scene()); 07061 07062 IndicePaginas++; 07063 if(IndicePaginas==1){ 07064 ui->pushButtonEditar->hide(); 07065 ui->pushButtonEditar->setDisabled(true); 07066 ui->pushButtonEditarPagina->setEnabled(true); 07067 ui->pushButtonTerminar->hide(); 07068 ui->pushButtonTerminar->setDisabled(true); 07069 ui->pushButtonEditarPagina->show(); 07070 ui->actionEditar->setEnabled(true); 07071 ui->actionEditarBoton->setEnabled(true); 07072 ui->pushButtonTerminarPagina->show(); 07073 ui->pushButtonTerminarPagina->setDisabled(true); 07074 } 07075 07076 if(IndicePaginas==a->paginas.size()){ 07077 ui->pushPagSiguiente->setDisabled(true); 07078 ui->action_Avanzar_P_gina->setDisabled(true); 07079 ui->actionAvanzarBoton->setDisabled(true); 07080 } 07081 Parser par(this->a->paginas[IndicePaginas-1]->RutaPlantilla().toStdString(), this); 07082 ticpp::Element* element=par.root(); 07083 07084 std::string resultado=par.get_attribute("editable", element); 07085 if(resultado=="No"){ 07086 ui->pushButtonEditarPagina->setDisabled(true); 07087 }else{ 07088 ui->pushButtonEditarPagina->setEnabled(true); 07089 } 07090 07091 } 07092 int FormPrincipal::GetNumeroAleatorio(int Min, int Max) 07093 { 07094 if(!this->semillaInicializada){ 07095 this->semillaInicializada=true; 07096 qsrand(QTime::currentTime().msec()); 07097 } 07098 if (Min > Max){ 07099 int Temp = Min; 07100 Min = Max; 07101 Max = Temp; 07102 } 07103 return ((qrand()%(Max-Min+1))+Min); 07104 } 07105 07106 QString FormPrincipal::GetPlantillaAleatoria(int numFotos){ 07107 07108 QString path=this->directoriodetrabajo.absolutePath() + "/templates/pages"; 07109 QDir *dir; 07110 QStringList *por; 07111 try{ 07112 dir=new QDir(path); 07113 por=new QStringList("*.xml"); 07114 }catch(std::exception& e){ 07115 Error *err=new Error(2, e.what(), this); 07116 err->LanzarDialogo(); 07117 delete err; 07118 exit(1); 07119 } 07120 bool fin=false; 07121 QString nombre; 07122 while(!fin){ 07123 QStringList fileNames = dir->entryList(*por); 07124 int numAleatorio= this->GetNumeroAleatorio(0, fileNames.count()-1); 07125 QFileInfo fi(fileNames.at(numAleatorio).toLocal8Bit()); 07126 QString cadenaAux=this->directoriodetrabajo.absolutePath() + "/templates/pages/" + fi.fileName(); 07127 Parser par(cadenaAux.toStdString(), this); 07128 ticpp::Element* element=par.root(); 07129 int num; 07130 par.get_attribute("texto", element, &num); 07131 if(num==0 && numFotos==0){ 07132 fin=true; 07133 nombre=fi.fileName(); 07134 }else{ 07135 if(num==0){ 07136 int numAuxFotos=0; 07137 par.get_attribute("imagen", element, &numAuxFotos); 07138 if(numAuxFotos==numFotos){ 07139 fin=true; 07140 nombre=fi.fileName(); 07141 } 07142 } 07143 } 07144 07145 } 07146 return this->directoriodetrabajo.absolutePath() + "/templates/pages/" + nombre; 07147 delete dir; 07148 delete por; 07149 } 07150 07151 QColor FormPrincipal::GetColorAleatorio(){ 07152 return QColor(this->GetNumeroAleatorio(0, 255), this->GetNumeroAleatorio(0, 255), this->GetNumeroAleatorio(0, 255)); 07153 } 07154 07155 void FormPrincipal::CrearPaginas(bool wizard){ 07156 if(!wizard){ 07157 eleccionOrden *dialogoOrden; 07158 try{ 07159 dialogoOrden=new eleccionOrden(this, this->controlador, this->directoriodetrabajo); 07160 }catch(std::exception& e){ 07161 Error *err=new Error(2, e.what(), this); 07162 err->LanzarDialogo(); 07163 delete err; 07164 exit(1); 07165 } 07166 dialogoOrden->exec(); 07167 if(dialogoOrden->result()==1){ 07168 07169 ordenAlfabetico=dialogoOrden->GetOrdenAlfabetico(); 07170 ordenFechaCreciente= dialogoOrden->GetOrdenFechasCreciente(); 07171 ordenFechaDecreciente= dialogoOrden->GetOrdenFechasDecreciente(); 07172 ordenPersonalizado= dialogoOrden->GetOrdenPersonalizado(); 07173 07174 //Insertamos las imágenes elegidas en un vector 07175 for (int i = ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 07176 //Entran todas las imágenes de la lista, independientemente de si estan seleccionadas o no 07177 a->InsertarFoto(ui->treeWidget->topLevelItem(i)->text(1), QDateTime::fromString(ui->treeWidget->topLevelItem(i)->text(4), Qt::TextDate), ui->treeWidget->topLevelItem(i)->text(5)); 07178 } 07179 DialogOrdenPersonalizado *dialogo; 07180 try{ 07181 dialogo= new DialogOrdenPersonalizado(a->GetVectorImagenes(), this, this->controlador, this->directoriodetrabajo); 07182 }catch(std::exception& e){ 07183 Error *err=new Error(2, e.what(), this); 07184 err->LanzarDialogo(); 07185 delete err; 07186 exit(1); 07187 } 07188 bool comprobarFinUtilidad; 07189 std::vector<ImagenInfo> vectorImagenes; 07190 bool canceladoFormOrdenPers=false; 07191 07192 if(ordenPersonalizado){ 07193 dialogo->exec(); 07194 if(dialogo->result()==1){ 07195 07196 comprobarFinUtilidad= dialogo->ComprobarFinUtilidad(); 07197 vectorImagenes=dialogo->GetVectorImagenes(); 07198 }else{ 07199 a->ResetImagenes(); 07200 canceladoFormOrdenPers=true; 07201 } 07202 } 07203 DialogCreacionPaginas *dialogocreacion; 07204 try{ 07205 dialogocreacion= new DialogCreacionPaginas(this, this->controlador, this->directoriodetrabajo); 07206 }catch(std::exception& e){ 07207 Error *err=new Error(2, e.what(), this); 07208 err->LanzarDialogo(); 07209 delete err; 07210 exit(1); 07211 } 07212 if(!canceladoFormOrdenPers){ 07213 dialogocreacion->setMiniaturasTexturas(this->miniaturasTexturas); 07214 dialogocreacion->exec(); 07215 if(dialogocreacion->result()==1){ 07216 this->paginasFijas= dialogocreacion->PaginasFijas(); 07217 this->paginasAleatorias = dialogocreacion->PaginasAleatorias(); 07218 this->paginasPersonalizadas = dialogocreacion->PaginasPersonalizadas(); 07219 static bool colorFondo; 07220 QString *nombrePlantillaFija=new QString(); 07221 QColor *qcolorFondo=new QColor(); 07222 QString *imagenFondo=new QString(); 07223 static bool escritooNo1, escritooNo2, escritooNo3, escritooNo4, coloreadooNo1, coloreadooNo2, coloreadooNo3, coloreadooNo4; 07224 static bool c1, c2, c3, c4, n1, n2, n3, n4, s1, s2, s3, s4; 07225 QString t1, t2, t3, t4; 07226 QFont fuente1, fuente2, fuente3, fuente4; 07227 QColor clr1, clr2, clr3, clr4; 07228 static int numTextos; 07229 if(paginasFijas){ 07230 colorFondo = dialogocreacion->ColorFondo(); 07231 *nombrePlantillaFija = dialogocreacion->NombrePlantillaFija(); 07232 if(colorFondo){ 07233 *qcolorFondo = dialogocreacion->GetColorFondo(); 07234 }else{ 07235 *imagenFondo = dialogocreacion->GetImagenFondo(); 07236 } 07237 07238 07239 numTextos= dialogocreacion->GetNumTextos(); 07240 escritooNo1 = dialogocreacion->escritooNo1; 07241 escritooNo2 = dialogocreacion->escritooNo2; 07242 escritooNo3 = dialogocreacion->escritooNo3; 07243 escritooNo4 = dialogocreacion->escritooNo4; 07244 coloreadooNo1 = dialogocreacion->coloreadooNo1; 07245 coloreadooNo2 = dialogocreacion->coloreadooNo2; 07246 coloreadooNo3 = dialogocreacion->coloreadooNo3; 07247 coloreadooNo4 = dialogocreacion->coloreadooNo4; 07248 c1 = dialogocreacion->c1; 07249 c2 = dialogocreacion->c2; 07250 c3 = dialogocreacion->c3; 07251 c4 = dialogocreacion->c4; 07252 n1 = dialogocreacion->n1; 07253 n2 = dialogocreacion->n2; 07254 n3 = dialogocreacion->n3; 07255 n4 = dialogocreacion->n4; 07256 s1 = dialogocreacion->s1; 07257 s2 = dialogocreacion->s2; 07258 s3 = dialogocreacion->s3; 07259 s4 = dialogocreacion->s4; 07260 t1 = dialogocreacion->t1; 07261 t2 = dialogocreacion->t2; 07262 t3 = dialogocreacion->t3; 07263 t4 = dialogocreacion->t4; 07264 fuente1 = dialogocreacion->fuente1; 07265 fuente2 = dialogocreacion->fuente2; 07266 fuente3 = dialogocreacion->fuente3; 07267 fuente4 = dialogocreacion->fuente4; 07268 clr1 = dialogocreacion->clr1; 07269 clr2 = dialogocreacion->clr2; 07270 clr3 = dialogocreacion->clr3; 07271 clr4 = dialogocreacion->clr4; 07272 } 07273 07274 07275 07276 if(ordenAlfabetico){ 07277 a->OrdenarAlfabeticamente(); 07278 }else{ 07279 if(ordenFechaCreciente){ 07280 a->OrdenarFechasCreciente(); 07281 }else{ 07282 if(ordenFechaDecreciente){ 07283 a->OrdenarFechasDecreciente(); 07284 }else{ 07285 if(ordenPersonalizado){ 07286 a->OrdenarPersonalizado(vectorImagenes); 07287 } 07288 } 07289 } 07290 } 07291 QProgressDialog *barraAvanzada= new QProgressDialog(this); 07292 barraAvanzada->setWindowTitle(tr("Generando...")); 07293 barraAvanzada->setFixedSize(361, 90); 07294 barraAvanzada->setStyle(new QWindowsStyle); 07295 barraAvanzada->setCancelButton(0); 07296 barraAvanzada->setRange(0, 7); 07297 07298 07299 if(paginasPersonalizadas){ 07300 //Lo necesario para páginas personalizadas 07301 07302 if(this->CreacionPaginasPersonalizadas()){ 07303 barraAvanzada->show(); 07304 barraAvanzada->setValue(1); 07305 barraAvanzada->setValue(2); 07306 barraAvanzada->setValue(3); 07307 this->GenerarPaginasPersonalizadas(); 07308 barraAvanzada->setValue(4); 07309 barraAvanzada->setValue(5); 07310 barraAvanzada->setValue(6); 07311 ui->treeWidget->setDisabled(true); 07312 ui->imagePreview->setDisabled(true); 07313 ui->pushCrearPaginas->setDisabled(true); 07314 ui->pushOpen->setDisabled(true); 07315 ui->actionAnnadirBoton->setDisabled(true); 07316 ui->actionA_adir_im_genes->setDisabled(true); 07317 ui->pushCheckAll->setDisabled(true); 07318 ui->actionSeleccionarTodoBoton->setDisabled(true); 07319 ui->actionSeleccionar_todo->setDisabled(true); 07320 ui->pushUncheckAll->setDisabled(true); 07321 07322 ui->actionDeseleccionarTodoBoton->setDisabled(true); 07323 this->ui->actionDeseleccionar_todo->setDisabled(true); 07324 ui->pushRemoveSelect->setDisabled(true); 07325 this->ui->actionBorrar_selecci_n->setDisabled(true); 07326 this->ui->actionEliminarFotosBoton->setDisabled(true); 07327 ui->pushPagSiguiente->setEnabled(true); 07328 ui->action_Avanzar_P_gina->setEnabled(true); 07329 ui->actionAvanzarBoton->setEnabled(true); 07330 } 07331 07332 }else{ 07333 barraAvanzada->show(); 07334 ui->treeWidget->setDisabled(true); 07335 ui->imagePreview->setDisabled(true); 07336 ui->pushCrearPaginas->setDisabled(true); 07337 ui->pushOpen->setDisabled(true); 07338 ui->actionAnnadirBoton->setDisabled(true); 07339 ui->actionA_adir_im_genes->setDisabled(true); 07340 ui->pushCheckAll->setDisabled(true); 07341 ui->actionSeleccionarTodoBoton->setDisabled(true); 07342 ui->actionSeleccionar_todo->setDisabled(true); 07343 ui->pushUncheckAll->setDisabled(true); 07344 07345 ui->actionDeseleccionarTodoBoton->setDisabled(true); 07346 this->ui->actionDeseleccionar_todo->setDisabled(true); 07347 ui->pushRemoveSelect->setDisabled(true); 07348 this->ui->actionBorrar_selecci_n->setDisabled(true); 07349 this->ui->actionEliminarFotosBoton->setDisabled(true); 07350 barraAvanzada->setValue(1); 07351 barraAvanzada->setValue(2); 07352 barraAvanzada->setValue(3); 07353 if(paginasFijas){ 07354 //Lo necesario para páginas fijas 07355 if(colorFondo){ 07356 CreacionPaginasFijas(*nombrePlantillaFija, *qcolorFondo); 07357 }else{ 07358 CreacionPaginasFijas(*nombrePlantillaFija, *imagenFondo); 07359 07360 } 07361 try{ 07362 for(unsigned i=0; i<a->paginas.size(); i++){ 07363 a->paginas[i]->LoadNumTextos(numTextos); 07364 if(escritooNo1){ 07365 if(coloreadooNo1) 07366 a->paginas[i]->LoadTexto(c1, n1, s1, t1, fuente1, clr1); 07367 else 07368 07369 a->paginas[i]->LoadTexto(c1, n1, s1, t1, fuente1); 07370 07371 } 07372 07373 if(escritooNo2){ 07374 if(coloreadooNo2) 07375 a->paginas[i]->LoadTexto(c2, n2, s2, t2, fuente2, clr2); 07376 else 07377 a->paginas[i]->LoadTexto(c2, n2, s2, t2, fuente2); 07378 } 07379 07380 if(escritooNo3){ 07381 if(coloreadooNo3) 07382 a->paginas[i]->LoadTexto(c3, n3, s3, t3, fuente3, clr3); 07383 else 07384 a->paginas[i]->LoadTexto(c3, n3, s3, t3, fuente3); 07385 } 07386 07387 if(escritooNo4){ 07388 if(coloreadooNo4) 07389 a->paginas[i]->LoadTexto(c4, n4, s4, t4, fuente4, clr4); 07390 else 07391 a->paginas[i]->LoadTexto(c4, n4, s4, t4, fuente4); 07392 } 07393 07394 07395 07396 } 07397 }catch(std::exception& e){ 07398 Error *err=new Error(1, e.what(), this); 07399 err->LanzarDialogo(); 07400 delete err; 07401 exit(1); 07402 } 07403 barraAvanzada->setValue(4); 07404 if(numTextos!=0){ 07405 Parser parser(nombrePlantillaFija->toStdString(), this); 07406 07407 std::vector<ticpp::Element*> areasT; 07408 07409 parser.find("area_texto", areasT, parser.find("areas_texto")); 07410 07411 unsigned contador=0; 07412 for(std::vector<ticpp::Element*>::iterator it = areasT.begin(); it != areasT.end(); it++){ 07413 int areaw, areaptos, areaposx, areaposy; 07414 std::string orientacion, centrado; 07415 parser.get_attribute("w", *it, &areaw); 07416 parser.get_attribute("pt", *it, &areaptos); 07417 parser.get_attribute("pos_x", *it, &areaposx); 07418 parser.get_attribute("pos_y", *it, &areaposy); 07419 orientacion=parser.get_attribute("orientacion", *it); 07420 centrado=parser.get_attribute("centrado", *it); 07421 07422 try{ 07423 for(unsigned cnt=0; cnt < a->paginas.size(); cnt++){ 07424 switch (contador){ 07425 07426 case 0: if(escritooNo1){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07427 case 1: if(escritooNo2){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07428 case 2: if(escritooNo3){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07429 case 3: if(escritooNo4){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; 07430 07431 07432 }; 07433 07434 } 07435 }catch(std::exception& e){ 07436 Error *err=new Error(1, e.what(), this); 07437 err->LanzarDialogo(); 07438 delete err; 07439 exit(1); 07440 } 07441 contador++; 07442 } 07443 07444 } 07445 barraAvanzada->setValue(5); 07446 07447 this->GenerarPaginasFijas(); 07448 barraAvanzada->setValue(6); 07449 ui->pushPagSiguiente->setEnabled(true); 07450 ui->action_Avanzar_P_gina->setEnabled(true); 07451 ui->actionAvanzarBoton->setEnabled(true); 07452 07453 }else{ 07454 if(paginasAleatorias){ 07455 //Lo necesario para páginas aleatorias 07456 barraAvanzada->setValue(4); 07457 CreacionPaginasAleatorias(); 07458 barraAvanzada->setValue(5); 07459 this->GenerarPaginasAleatorias(); 07460 barraAvanzada->setValue(6); 07461 ui->pushPagSiguiente->setEnabled(true); 07462 ui->action_Avanzar_P_gina->setEnabled(true); 07463 ui->actionAvanzarBoton->setEnabled(true); 07464 } 07465 } 07466 } 07467 07468 07469 this->creadasPaginas=true; 07470 barraAvanzada->setValue(7); 07471 07472 07473 barraAvanzada->close(); 07474 delete barraAvanzada; 07475 delete nombrePlantillaFija; 07476 delete imagenFondo; 07477 }else{ 07478 07479 a->ResetImagenes(); 07480 } 07481 } 07482 delete dialogocreacion; 07483 delete dialogo; 07484 07485 } 07486 delete dialogoOrden; 07487 07488 for(unsigned ultimo=0; ultimo < this->a->paginas.size(); ultimo++){ 07489 tipoPosicionesItems aux; 07490 this->posicionesItemsPaginas.insert(ultimo, aux); 07491 this->paginasDesplazadas.insert(ultimo, ""); 07492 } 07493 }else{ 07494 07495 07496 07497 eleccionOrden *dialogoOrden; 07498 try{ 07499 dialogoOrden=new eleccionOrden(this, this->controlador, this->directoriodetrabajo); 07500 }catch(std::exception& e){ 07501 Error *err=new Error(2, e.what(), this); 07502 err->LanzarDialogo(); 07503 delete err; 07504 exit(1); 07505 } 07506 dialogoOrden->exec(); 07507 if(dialogoOrden->result()==1){ 07508 bool ordenAlfabetico, ordenFechaCreciente, ordenFechaDecreciente, ordenPersonalizado; 07509 ordenAlfabetico=dialogoOrden->GetOrdenAlfabetico(); 07510 ordenFechaCreciente= dialogoOrden->GetOrdenFechasCreciente(); 07511 ordenFechaDecreciente= dialogoOrden->GetOrdenFechasDecreciente(); 07512 ordenPersonalizado= dialogoOrden->GetOrdenPersonalizado(); 07513 07514 //Insertamos las imágenes elegidas en un vector 07515 for (int i = this->fotos->ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 07516 //Entran todas las imágenes de la lista, independientemente de si estan seleccionadas o no 07517 a->InsertarFoto(this->fotos->ui->treeWidget->topLevelItem(i)->text(1), QDateTime::fromString(this->fotos->ui->treeWidget->topLevelItem(i)->text(4), Qt::TextDate), this->fotos->ui->treeWidget->topLevelItem(i)->text(5)); 07518 } 07519 DialogOrdenPersonalizado *dialogo; 07520 try{ 07521 dialogo= new DialogOrdenPersonalizado(a->GetVectorImagenes(), this, this->controlador, this->directoriodetrabajo); 07522 }catch(std::exception& e){ 07523 Error *err=new Error(2, e.what(), this); 07524 err->LanzarDialogo(); 07525 delete err; 07526 exit(1); 07527 } 07528 bool comprobarFinUtilidad; 07529 std::vector<ImagenInfo> vectorImagenes; 07530 bool canceladoFormOrdenPers=false; 07531 07532 if(ordenPersonalizado){ 07533 dialogo->exec(); 07534 if(dialogo->result()==1){ 07535 07536 comprobarFinUtilidad= dialogo->ComprobarFinUtilidad(); 07537 vectorImagenes=dialogo->GetVectorImagenes(); 07538 }else{ 07539 a->ResetImagenes(); 07540 canceladoFormOrdenPers=true; 07541 } 07542 } 07543 DialogCreacionPaginas *dialogocreacion; 07544 try{ 07545 dialogocreacion= new DialogCreacionPaginas(this, this->controlador, this->directoriodetrabajo); 07546 }catch(std::exception& e){ 07547 Error *err=new Error(2, e.what(), this); 07548 err->LanzarDialogo(); 07549 delete err; 07550 exit(1); 07551 } 07552 if(!canceladoFormOrdenPers){ 07553 dialogocreacion->setMiniaturasTexturas(this->miniaturasTexturas); 07554 dialogocreacion->exec(); 07555 if(dialogocreacion->result()==1){ 07556 this->paginasFijas= dialogocreacion->PaginasFijas(); 07557 this->paginasAleatorias = dialogocreacion->PaginasAleatorias(); 07558 this->paginasPersonalizadas = dialogocreacion->PaginasPersonalizadas(); 07559 static bool colorFondo; 07560 QString nombrePlantillaFija; 07561 QColor qcolorFondo; 07562 QString imagenFondo; 07563 static bool escritooNo1, escritooNo2, escritooNo3, escritooNo4, coloreadooNo1, coloreadooNo2, coloreadooNo3, coloreadooNo4; 07564 static bool c1, c2, c3, c4, n1, n2, n3, n4, s1, s2, s3, s4; 07565 QString t1, t2, t3, t4; 07566 QFont fuente1, fuente2, fuente3, fuente4; 07567 QColor clr1, clr2, clr3, clr4; 07568 static int numTextos; 07569 if(paginasFijas){ 07570 colorFondo = dialogocreacion->ColorFondo(); 07571 nombrePlantillaFija = dialogocreacion->NombrePlantillaFija(); 07572 qcolorFondo = dialogocreacion->GetColorFondo(); 07573 imagenFondo = dialogocreacion->GetImagenFondo(); 07574 numTextos= dialogocreacion->GetNumTextos(); 07575 escritooNo1 = dialogocreacion->escritooNo1; 07576 escritooNo2 = dialogocreacion->escritooNo2; 07577 escritooNo3 = dialogocreacion->escritooNo3; 07578 escritooNo4 = dialogocreacion->escritooNo4; 07579 coloreadooNo1 = dialogocreacion->coloreadooNo1; 07580 coloreadooNo2 = dialogocreacion->coloreadooNo2; 07581 coloreadooNo3 = dialogocreacion->coloreadooNo3; 07582 coloreadooNo4 = dialogocreacion->coloreadooNo4; 07583 c1 = dialogocreacion->c1; 07584 c2 = dialogocreacion->c2; 07585 c3 = dialogocreacion->c3; 07586 c4 = dialogocreacion->c4; 07587 n1 = dialogocreacion->n1; 07588 n2 = dialogocreacion->n2; 07589 n3 = dialogocreacion->n3; 07590 n4 = dialogocreacion->n4; 07591 s1 = dialogocreacion->s1; 07592 s2 = dialogocreacion->s2; 07593 s3 = dialogocreacion->s3; 07594 s4 = dialogocreacion->s4; 07595 t1 = dialogocreacion->t1; 07596 t2 = dialogocreacion->t2; 07597 t3 = dialogocreacion->t3; 07598 t4 = dialogocreacion->t4; 07599 fuente1 = dialogocreacion->fuente1; 07600 fuente2 = dialogocreacion->fuente2; 07601 fuente3 = dialogocreacion->fuente3; 07602 fuente4 = dialogocreacion->fuente4; 07603 clr1 = dialogocreacion->clr1; 07604 clr2 = dialogocreacion->clr2; 07605 clr3 = dialogocreacion->clr3; 07606 clr4 = dialogocreacion->clr4; 07607 } 07608 07609 07610 07611 07612 07613 07614 if(ordenAlfabetico){ 07615 a->OrdenarAlfabeticamente(); 07616 }else{ 07617 if(ordenFechaCreciente){ 07618 a->OrdenarFechasCreciente(); 07619 }else{ 07620 if(ordenFechaDecreciente){ 07621 a->OrdenarFechasDecreciente(); 07622 }else{ 07623 if(ordenPersonalizado){ 07624 a->OrdenarPersonalizado(vectorImagenes); 07625 } 07626 } 07627 } 07628 } 07629 QProgressDialog *barraAvanzada= new QProgressDialog(); 07630 barraAvanzada->setWindowTitle(tr("Generando...")); 07631 barraAvanzada->setFixedSize(361, 90); 07632 barraAvanzada->setStyle(new QWindowsStyle); 07633 barraAvanzada->setCancelButton(0); 07634 barraAvanzada->setRange(0, 7); 07635 07636 if(paginasPersonalizadas){ 07637 //Lo necesario para páginas personalizadas 07638 if(this->CreacionPaginasPersonalizadas()){ 07639 barraAvanzada->show(); 07640 barraAvanzada->setValue(1); 07641 barraAvanzada->setValue(2); 07642 barraAvanzada->setValue(3); 07643 this->GenerarPaginasPersonalizadas(); 07644 barraAvanzada->setValue(4); 07645 barraAvanzada->setValue(5); 07646 barraAvanzada->setValue(6); 07647 ui->treeWidget->setDisabled(true); 07648 ui->imagePreview->setDisabled(true); 07649 ui->pushCrearPaginas->setDisabled(true); 07650 ui->pushOpen->setDisabled(true); 07651 ui->actionAnnadirBoton->setDisabled(true); 07652 ui->actionA_adir_im_genes->setDisabled(true); 07653 ui->pushCheckAll->setDisabled(true); 07654 ui->actionSeleccionarTodoBoton->setDisabled(true); 07655 ui->actionSeleccionar_todo->setDisabled(true); 07656 ui->pushUncheckAll->setDisabled(true); 07657 07658 ui->actionDeseleccionarTodoBoton->setDisabled(true); 07659 this->ui->actionDeseleccionar_todo->setDisabled(true); 07660 ui->pushRemoveSelect->setDisabled(true); 07661 this->ui->actionBorrar_selecci_n->setDisabled(true); 07662 this->ui->actionEliminarFotosBoton->setDisabled(true); 07663 ui->pushPagSiguiente->setEnabled(true); 07664 ui->action_Avanzar_P_gina->setEnabled(true); 07665 ui->actionAvanzarBoton->setEnabled(true); 07666 }else{ 07667 this->fotos->setCancelar(); 07668 } 07669 07670 }else{ 07671 barraAvanzada->show(); 07672 ui->treeWidget->setDisabled(true); 07673 ui->imagePreview->setDisabled(true); 07674 ui->pushCrearPaginas->setDisabled(true); 07675 ui->pushOpen->setDisabled(true); 07676 07677 ui->actionAnnadirBoton->setDisabled(true); 07678 ui->actionA_adir_im_genes->setDisabled(true); 07679 ui->pushCheckAll->setDisabled(true); 07680 ui->actionSeleccionarTodoBoton->setDisabled(true); 07681 ui->actionSeleccionar_todo->setDisabled(true); 07682 ui->pushUncheckAll->setDisabled(true); 07683 07684 ui->actionDeseleccionarTodoBoton->setDisabled(true); 07685 this->ui->actionDeseleccionar_todo->setDisabled(true); 07686 ui->pushRemoveSelect->setDisabled(true); 07687 this->ui->actionBorrar_selecci_n->setDisabled(true); 07688 this->ui->actionEliminarFotosBoton->setDisabled(true); 07689 barraAvanzada->setValue(1); 07690 barraAvanzada->setValue(2); 07691 barraAvanzada->setValue(3); 07692 if(paginasFijas){ 07693 //Lo necesario para páginas fijas 07694 if(colorFondo){ 07695 CreacionPaginasFijas(nombrePlantillaFija, qcolorFondo); 07696 }else{ 07697 CreacionPaginasFijas(nombrePlantillaFija, imagenFondo); 07698 07699 } 07700 try{ 07701 for(unsigned i=0; i<a->paginas.size(); i++){ 07702 a->paginas[i]->LoadNumTextos(numTextos); 07703 if(escritooNo1){ 07704 if(coloreadooNo1) 07705 a->paginas[i]->LoadTexto(c1, n1, s1, t1, fuente1, clr1); 07706 else 07707 07708 a->paginas[i]->LoadTexto(c1, n1, s1, t1, fuente1); 07709 07710 } 07711 07712 if(escritooNo2){ 07713 if(coloreadooNo2) 07714 a->paginas[i]->LoadTexto(c2, n2, s2, t2, fuente2, clr2); 07715 else 07716 a->paginas[i]->LoadTexto(c2, n2, s2, t2, fuente2); 07717 } 07718 07719 if(escritooNo3){ 07720 if(coloreadooNo3) 07721 a->paginas[i]->LoadTexto(c3, n3, s3, t3, fuente3, clr3); 07722 else 07723 a->paginas[i]->LoadTexto(c3, n3, s3, t3, fuente3); 07724 } 07725 07726 if(escritooNo4){ 07727 if(coloreadooNo4) 07728 a->paginas[i]->LoadTexto(c4, n4, s4, t4, fuente4, clr4); 07729 else 07730 a->paginas[i]->LoadTexto(c4, n4, s4, t4, fuente4); 07731 } 07732 07733 07734 07735 } 07736 }catch(std::exception& e){ 07737 Error *err=new Error(1, e.what(), this); 07738 err->LanzarDialogo(); 07739 delete err; 07740 exit(1); 07741 } 07742 barraAvanzada->setValue(4); 07743 if(numTextos!=0){ 07744 Parser parser(nombrePlantillaFija.toStdString(), this); 07745 07746 std::vector<ticpp::Element*> areasT; 07747 07748 parser.find("area_texto", areasT, parser.find("areas_texto")); 07749 07750 unsigned contador=0; 07751 for(std::vector<ticpp::Element*>::iterator it = areasT.begin(); it != areasT.end(); it++){ 07752 int areaw, areaptos, areaposx, areaposy; 07753 std::string orientacion, centrado; 07754 parser.get_attribute("w", *it, &areaw); 07755 parser.get_attribute("pt", *it, &areaptos); 07756 parser.get_attribute("pos_x", *it, &areaposx); 07757 parser.get_attribute("pos_y", *it, &areaposy); 07758 orientacion=parser.get_attribute("orientacion", *it); 07759 centrado=parser.get_attribute("centrado", *it); 07760 try{ 07761 for(unsigned cnt=0; cnt < a->paginas.size(); cnt++){ 07762 switch (contador){ 07763 07764 case 0: if(escritooNo1){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07765 case 1: if(escritooNo2){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07766 case 2: if(escritooNo3){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; break; 07767 case 3: if(escritooNo4){a->paginas[cnt]->LoadTextoResto(contador, areaw*(this->controlador->getWVisorAlbum())/462, areaptos*(this->controlador->getWVisorAlbum())/462, areaposx*(this->controlador->getWVisorAlbum())/462, areaposy*(this->controlador->getHVisorAlbum())/321, orientacion, centrado); }; 07768 07769 07770 }; 07771 07772 } 07773 }catch(std::exception& e){ 07774 Error *err=new Error(1, e.what(), this); 07775 err->LanzarDialogo(); 07776 delete err; 07777 exit(1); 07778 } 07779 contador++; 07780 } 07781 07782 } 07783 barraAvanzada->setValue(5); 07784 07785 this->GenerarPaginasFijas(); 07786 barraAvanzada->setValue(6); 07787 ui->pushPagSiguiente->setEnabled(true); 07788 ui->action_Avanzar_P_gina->setEnabled(true); 07789 ui->actionAvanzarBoton->setEnabled(true); 07790 07791 }else{ 07792 if(paginasAleatorias){ 07793 //Lo necesario para páginas aleatorias 07794 barraAvanzada->setValue(4); 07795 CreacionPaginasAleatorias(); 07796 barraAvanzada->setValue(5); 07797 this->GenerarPaginasAleatorias(); 07798 barraAvanzada->setValue(6); 07799 ui->pushPagSiguiente->setEnabled(true); 07800 ui->action_Avanzar_P_gina->setEnabled(true); 07801 ui->actionAvanzarBoton->setEnabled(true); 07802 } 07803 } 07804 } 07805 07806 07807 this->creadasPaginas=true; 07808 barraAvanzada->setValue(7); 07809 07810 07811 barraAvanzada->close(); 07812 delete barraAvanzada; 07813 07814 }else{ 07815 this->fotos->setCancelar(); 07816 07817 a->ResetImagenes(); 07818 } 07819 07820 }else{ 07821 this->fotos->setCancelar(); 07822 07823 07824 } 07825 delete dialogocreacion; 07826 delete dialogo; 07827 07828 }else{ 07829 this->fotos->setCancelar(); 07830 07831 } 07832 delete dialogoOrden; 07833 for(unsigned ultimo=0; ultimo < this->a->paginas.size(); ultimo++){ 07834 tipoPosicionesItems aux; 07835 this->posicionesItemsPaginas.insert(ultimo, aux); 07836 this->paginasDesplazadas.insert(ultimo, ""); 07837 } 07838 07839 07840 07841 07842 07843 } 07844 07845 } 07846 07847 QDir FormPrincipal::GetDirectorioDeTrabajo(){ 07848 return this->directoriodetrabajo; 07849 } 07850 07851 void FormPrincipal::LanzarSelectorFondoPortada(QWidget *parent){ 07852 FondoDialog *dialog; 07853 this->ui->selectorPlantilla->setDisabled(true); 07854 try{ 07855 dialog=new FondoDialog(parent, this->a->portada->RutaPlantilla(), false, this->controlador, this->directoriodetrabajo); 07856 }catch(std::exception& e){ 07857 Error *err=new Error(2, e.what(), this); 07858 err->LanzarDialogo(); 07859 delete err; 07860 exit(1); 07861 } 07862 dialog->setMiniaturasTexturas(this->miniaturasTexturas); 07863 dialog->exec(); 07864 a->portada->DesactivarColordefondo(); 07865 07866 if(dialog->ColordeFondo()){ 07867 07868 a->portada->LoadFondo(dialog->ColorFondo()); 07869 a->portada->ActivarColordefondo(); 07870 this->elegidoFondoPortada=true; 07871 this->seleccionadaTextura=false; 07872 }else{ 07873 if(dialog->TexturadeFondo()){ 07874 this->seleccionadaTextura=true; 07875 } 07876 a->portada->LoadFondo(dialog->ImagenFondo()); 07877 this->elegidoFondoPortada=true; 07878 } 07879 if(dialog->result()==QDialog::Accepted){ 07880 07881 if(this->a->portada->FondoClr().isValid() || !this->a->portada->FondoImg().isEmpty()){ 07882 this->ui->selectorPlantilla->setDisabled(true); 07883 this->ui->action_Nuevo->setEnabled(true); 07884 this->ui->actionNuevoBoton->setEnabled(true); 07885 } 07886 } 07887 delete dialog; 07888 if(this->elegidaFrontalPortada && this->a->portada->hayImagenTrasera()){ 07889 if(this->elegidaTraseraPortada){ 07890 if(this->elegidoFondoPortada && this->a->portada->ContieneTexto()){ 07891 if(this->elegidoTexto){ 07892 this->ui->botonPrueba->setEnabled(true); 07893 07894 }else{ 07895 this->ui->botonPrueba->setDisabled(true); 07896 } 07897 07898 }else{ 07899 if(this->elegidoFondoPortada){ 07900 this->ui->botonPrueba->setEnabled(true); 07901 }else{ 07902 this->ui->botonPrueba->setDisabled(true); 07903 } 07904 } 07905 }else{ 07906 this->ui->botonPrueba->setDisabled(true); 07907 } 07908 }else{ 07909 if(this->elegidaFrontalPortada){ 07910 if(!this->a->portada->hayImagenTrasera()){ 07911 if(this->elegidoFondoPortada){ 07912 if(this->a->portada->ContieneTexto()){ 07913 if(this->elegidoTexto){ 07914 this->ui->botonPrueba->setEnabled(true); 07915 }else{ 07916 this->ui->botonPrueba->setDisabled(true); 07917 } 07918 07919 }else{ 07920 this->ui->botonPrueba->setEnabled(true); 07921 } 07922 }else{ 07923 this->ui->botonPrueba->setDisabled(true); 07924 } 07925 }else{ 07926 this->ui->botonPrueba->setDisabled(true); 07927 } 07928 }else{ 07929 this->ui->botonPrueba->setDisabled(true); 07930 } 07931 } 07932 if(this->elegidoFondoPortada && this->a->portada->ContieneTexto() && !this->a->portada->hayImagenFrontal() && !this->a->portada->hayImagenTrasera()){ 07933 this->ui->botonPrueba->setEnabled(true); 07934 } 07935 } 07936 07937 07938 void FormPrincipal::LanzarFormTexto(QWidget *parent){ 07939 07940 int maxFron, maxTras, maxLat; 07941 07942 QString filename; 07943 filename=a->portada->RutaPlantilla(); 07944 07945 Parser parser(filename.toStdString(), this); 07946 ticpp::Element* elementTF =parser.find("area_texto_fro"); 07947 ticpp::Element* elementTL =parser.find("area_texto_lat"); 07948 ticpp::Element* elementTT =parser.find("area_texto_tra"); 07949 parser.get_attribute("limite", elementTF, &maxFron); 07950 parser.get_attribute("limite", elementTL, &maxLat); 07951 parser.get_attribute("limite", elementTT, &maxTras); 07952 try{ 07953 this->formTexto= new formTextoClass(parent, this->a->portada->RutaPlantilla(), this->controlador, this->directoriodetrabajo); 07954 }catch(std::exception& e){ 07955 Error *err=new Error(2, e.what(), this); 07956 err->LanzarDialogo(); 07957 delete err; 07958 exit(1); 07959 } 07960 formTexto->ui->lineEditFrontal->setMaxLength(maxFron); 07961 formTexto->ui->lineEditTrasero->setMaxLength(maxTras); 07962 formTexto->ui->lineEditLateral->setMaxLength(maxLat); 07963 formTexto->exec(); 07964 if(formTexto->formularioAceptado()){ 07965 this->ui->selectorPlantilla->setDisabled(true); 07966 this->ui->action_Nuevo->setEnabled(true); 07967 this->ui->actionNuevoBoton->setEnabled(true); 07968 a->portada->LoadTextoFrontal(formTexto->curfront, formTexto->negfront, formTexto->subfront, formTexto->textfront, formTexto->ffront); 07969 a->portada->LoadTextoTrasero(formTexto->curtras, formTexto->negtras, formTexto->subtras, formTexto->texttras, formTexto->ftras); 07970 a->portada->LoadTextoLateral(formTexto->curlat, formTexto->neglat, formTexto->sublat, formTexto->textlat, formTexto->flat); 07971 if(formTexto->coloreadotextofron){ 07972 a->portada->LoadColorTextoFrontal(formTexto->colortextofron); 07973 } 07974 07975 if(formTexto->coloreadotextolat){ 07976 a->portada->LoadColorTextoLateral(formTexto->colortextolat); 07977 } 07978 07979 if(formTexto->coloreadotextotras){ 07980 a->portada->LoadColorTextoTrasera(formTexto->colortextotras); 07981 } 07982 07983 07984 this->portada->setEnabledTieneTexto(true); 07985 this->elegidoTexto=true; 07986 }else{ 07987 this->elegidoTexto=false; 07988 this->portada->setEnabledTieneTexto(false); 07989 07990 } 07991 delete formTexto; 07992 if(this->elegidaFrontalPortada && this->a->portada->hayImagenTrasera()){ 07993 if(this->elegidaTraseraPortada){ 07994 if(this->elegidoFondoPortada && this->a->portada->ContieneTexto()){ 07995 if(this->elegidoTexto){ 07996 this->ui->botonPrueba->setEnabled(true); 07997 07998 }else{ 07999 this->ui->botonPrueba->setDisabled(true); 08000 } 08001 08002 }else{ 08003 if(this->elegidoFondoPortada){ 08004 this->ui->botonPrueba->setEnabled(true); 08005 }else{ 08006 this->ui->botonPrueba->setDisabled(true); 08007 } 08008 } 08009 }else{ 08010 this->ui->botonPrueba->setDisabled(true); 08011 } 08012 }else{ 08013 if(this->elegidaFrontalPortada){ 08014 if(!this->a->portada->hayImagenTrasera()){ 08015 if(this->elegidoFondoPortada){ 08016 if(this->a->portada->ContieneTexto()){ 08017 if(this->elegidoTexto){ 08018 this->ui->botonPrueba->setEnabled(true); 08019 }else{ 08020 this->ui->botonPrueba->setDisabled(true); 08021 } 08022 08023 }else{ 08024 this->ui->botonPrueba->setEnabled(true); 08025 } 08026 }else{ 08027 this->ui->botonPrueba->setDisabled(true); 08028 } 08029 }else{ 08030 this->ui->botonPrueba->setDisabled(true); 08031 } 08032 }else{ 08033 this->ui->botonPrueba->setDisabled(true); 08034 } 08035 } 08036 if(this->a->portada->ContieneTexto() && !this->a->portada->hayImagenFrontal() && !this->a->portada->hayImagenTrasera()){ 08037 if(this->elegidoFondoPortada){ 08038 this->ui->botonPrueba->setEnabled(true); 08039 } 08040 } 08041 } 08042 08043 void FormPrincipal::LanzarTamanno(){ 08044 DialogTamanno *formTamanno; 08045 try{ 08046 formTamanno=new DialogTamanno(this, this->controlador, this->directoriodetrabajo); 08047 }catch(std::exception& e){ 08048 Error *err=new Error(2, e.what(), this); 08049 err->LanzarDialogo(); 08050 delete err; 08051 exit(1); 08052 } 08053 formTamanno->exec(); 08054 if(formTamanno->SeguirOno()){ 08055 this->cargarDimensiones(formTamanno->WAlbum(), formTamanno->HAlbum()); 08056 08057 CargarPreview(); 08058 08059 08060 } 08061 08062 delete formTamanno; 08063 } 08064 08065 void FormPrincipal::cargarDimensiones(int w_, int h_){ 08066 a->portada->LoadDimensiones(h_, w_); 08067 this->dimensionWpagina=w_; 08068 this->dimensionHpagina=h_; 08069 } 08070 08071 void FormPrincipal::EditarTamannoAlbum(){ 08072 DialogTamanno *formTamanno; 08073 try{ 08074 formTamanno=new DialogTamanno(this, this->controlador, this->directoriodetrabajo); 08075 }catch(std::exception& e){ 08076 Error *err=new Error(2, e.what(), this); 08077 err->LanzarDialogo(); 08078 delete err; 08079 exit(1); 08080 } 08081 formTamanno->exec(); 08082 if(formTamanno->SeguirOno()){ 08083 a->portada->LoadDimensiones(formTamanno->HAlbum(), formTamanno->WAlbum()); 08084 this->dimensionWpagina=formTamanno->WAlbum(); 08085 this->dimensionHpagina=formTamanno->HAlbum(); 08086 if(this->creadasPaginas){ 08087 try{ 08088 for(unsigned i=0; i < this->a->paginas.size(); i++){ 08089 this->a->paginas[i]->LoadDimensiones(this->dimensionHpagina, this->dimensionWpagina); 08090 } 08091 }catch(std::exception& e){ 08092 Error *err=new Error(1, e.what(), this); 08093 err->LanzarDialogo(); 08094 delete err; 08095 exit(1); 08096 } 08097 } 08098 } 08099 delete formTamanno; 08100 } 08101 08102 bool FormPrincipal::getPaginasAleatorias(){ 08103 return this->paginasAleatorias; 08104 } 08105 08106 bool FormPrincipal::getPaginasFijas(){ 08107 return this->paginasFijas; 08108 } 08109 08110 bool FormPrincipal::getPaginasPersonalizadas(){ 08111 return this->paginasPersonalizadas; 08112 } 08113 08114 void FormPrincipal::CargarPreview(){ 08115 static QProgressDialog *barra; 08116 if(!this->activadaCarga){ 08117 08118 barra= new QProgressDialog(); 08119 barra->setCancelButton(0); 08120 barra->setFixedSize(361, 90); 08121 barra->setWindowTitle(tr("Generando la portada...")); 08122 barra->setStyle(new QWindowsStyle); 08123 barra->setRange(0, 17); 08124 08125 } 08126 this->ui->treeWidget->clear(); 08127 //Eliminamos las miniaturas de las imágenes frontal y trasera 08128 for(unsigned i=0; i<this->miniaturas.size(); i++){ 08129 delete this->miniaturas.at(i); 08130 } 08131 this->miniaturas.clear(); 08132 QString filename; 08133 08134 filename=a->portada->RutaPlantilla(); 08135 Parser parser(filename.toStdString(), this); 08136 int w_imgfron, w_imgtras, h_imgfron, h_imgtras, posx_imgtras, posx_imgfron, posy_imgfron, posy_imgtras; 08137 int pt_textofron, pt_textolat, pt_textotras, w_textofron, w_textolat, w_textotras, x_textofron, x_textotras, x_textolat, 08138 y_textofron,y_textotras, y_textolat; 08139 std::string orientaciontras, orientacionfron, orientacionlat, centradotras, centradofron, centradolat; 08140 ticpp::Element* element=parser.root(); 08141 static ticpp::Element* elementIF; 08142 static ticpp::Element* elementIT; 08143 static ticpp::Element* elementTF; 08144 static ticpp::Element* elementTL; 08145 static ticpp::Element* elementTT; 08146 if(this->a->portada->hayImagenFrontal()){ 08147 elementIF =parser.find("area_imagen_fro"); 08148 } 08149 if(this->a->portada->hayImagenTrasera()){ 08150 elementIT =parser.find("area_imagen_tra"); 08151 } 08152 if(this->a->portada->hayTextoFrontal()){ 08153 elementTF =parser.find("area_texto_fro"); 08154 } 08155 if(this->a->portada->hayTextoLateral()){ 08156 elementTL =parser.find("area_texto_lat"); 08157 } 08158 if(this->a->portada->hayTextoTrasero()){ 08159 elementTT =parser.find("area_texto_tra"); 08160 } 08161 std::string mascara=parser.get_attribute("mascara", element); 08162 if(mascara!="no"){ 08163 a->portada->activarMascara(QString::fromStdString(mascara)); 08164 } 08165 if(this->a->portada->hayTextoFrontal()){ 08166 // Parseamos del xml de la plantilla los parámetros que nos faltan para crear la portada 08167 parser.get_attribute("w", elementTF, &w_textofron); 08168 parser.get_attribute("pt", elementTF, &pt_textofron); 08169 parser.get_attribute("pos_x", elementTF, &x_textofron); 08170 parser.get_attribute("pos_y", elementTF, &y_textofron); 08171 orientacionfron=parser.get_attribute("orientacion", elementTF); 08172 centradofron=parser.get_attribute("centrado", elementTF); 08173 08174 // Una vez parseado, lo introducimos en la portada 08175 a->portada->LoadTextoFrontalResto((w_textofron*(this->controlador->getWVisorAlbum()))/462, (pt_textofron*(this->controlador->getWVisorAlbum()))/462, x_textofron*(this->controlador->getWVisorAlbum())/462, y_textofron*(this->controlador->getHVisorAlbum())/321, orientacionfron, centradofron); 08176 } 08177 if(this->a->portada->hayTextoTrasero()){ 08178 parser.get_attribute("w", elementTT, &w_textotras); 08179 parser.get_attribute("pt", elementTT, &pt_textotras); 08180 parser.get_attribute("pos_x", elementTT, &x_textotras); 08181 parser.get_attribute("pos_y", elementTT, &y_textotras); 08182 orientaciontras=parser.get_attribute("orientacion", elementTT); 08183 centradotras=parser.get_attribute("centrado", elementTT); 08184 a->portada->LoadTextoTraseroResto(w_textotras*(this->controlador->getWVisorAlbum())/462, pt_textotras*(this->controlador->getWVisorAlbum())/462, x_textotras*(this->controlador->getWVisorAlbum())/462, y_textotras*(this->controlador->getHVisorAlbum())/321, orientaciontras, centradotras); 08185 } 08186 if(this->a->portada->hayTextoLateral()){ 08187 parser.get_attribute("w", elementTL, &w_textolat); 08188 parser.get_attribute("pt", elementTL, &pt_textolat); 08189 parser.get_attribute("pos_x", elementTL, &x_textolat); 08190 parser.get_attribute("pos_y", elementTL, &y_textolat); 08191 orientacionlat=parser.get_attribute("orientacion", elementTL); 08192 centradolat=parser.get_attribute("centrado", elementTL); 08193 a->portada->LoadTextoLateralResto(w_textolat*(this->controlador->getWVisorAlbum())/462, pt_textolat*(this->controlador->getWVisorAlbum())/462, x_textolat*(this->controlador->getWVisorAlbum())/462, y_textolat*(this->controlador->getHVisorAlbum())/321, orientacionlat, centradolat); 08194 } 08195 std::string pos; 08196 if(this->a->portada->hayImagenFrontal()){ 08197 parser.get_attribute("w", elementIF, &w_imgfron); 08198 parser.get_attribute("h", elementIF, &h_imgfron); 08199 parser.get_attribute("pos_x", elementIF, &posx_imgfron); 08200 parser.get_attribute("pos_y", elementIF, &posy_imgfron); 08201 pos=parser.get_attribute("pos", elementIF); 08202 a->portada->LoadFotoFrontalResto(w_imgfron*(this->controlador->getWVisorAlbum())/462, h_imgfron*(this->controlador->getHVisorAlbum())/321, posx_imgfron*(this->controlador->getWVisorAlbum())/462, posy_imgfron*(this->controlador->getHVisorAlbum())/321, pos); 08203 } 08204 08205 std::string posTra; 08206 if(this->a->portada->hayImagenTrasera()){ 08207 parser.get_attribute("w", elementIT, &w_imgtras); 08208 parser.get_attribute("h", elementIT, &h_imgtras); 08209 parser.get_attribute("pos_x", elementIT, &posx_imgtras); 08210 parser.get_attribute("pos_y", elementIT, &posy_imgtras); 08211 posTra=parser.get_attribute("pos", elementIT); 08212 a->portada->LoadFotoTraseraResto(w_imgtras*(this->controlador->getWVisorAlbum())/462, h_imgtras*(this->controlador->getHVisorAlbum())/321, posx_imgtras*(this->controlador->getWVisorAlbum())/462, posy_imgtras*(this->controlador->getHVisorAlbum())/321, posTra); 08213 } 08214 08215 // El tamaño que se establece para la portada en esta sección es solo el tamaño de la previsualización 08216 08217 if(!this->activadaCarga){ 08218 barra->setValue(1); 08219 } 08220 QGraphicsScene *escenaAlmacenable; 08221 try{ 08222 escenaAlmacenable= new QGraphicsScene(0, 0, (this->controlador->getWVisorAlbum()), (this->controlador->getHVisorAlbum())); 08223 }catch(std::exception& e){ 08224 Error *err=new Error(2, e.what(), this); 08225 err->LanzarDialogo(); 08226 delete err; 08227 exit(1); 08228 } 08229 a->portada->versionReducida->setScene(escenaAlmacenable); 08230 08231 if(a->portada->ColordeFondo() && !a->portada->activadaMascara()){ 08232 //Establecemos de fondo un color. 08233 QBrush *wall; 08234 try{ 08235 wall= new QBrush(a->portada->FondoClr()); 08236 }catch(std::exception& e){ 08237 Error *err=new Error(2, e.what(), this); 08238 err->LanzarDialogo(); 08239 delete err; 08240 exit(1); 08241 } 08242 a->portada->versionReducida->scene()->setBackgroundBrush(*wall); 08243 delete wall; 08244 }else{ 08245 08246 if(!a->portada->activadaMascara()){ 08247 QPixmap *g; 08248 try{ 08249 g=new QPixmap(a->portada->FondoImg()); 08250 if(g->isNull()){ 08251 throw std::ios_base::failure(tr("No pudo abrirse la imagen de fondo de la portada.").toStdString()); 08252 } 08253 }catch(std::exception& e){ 08254 Error *err=new Error(4, e.what(), this); 08255 err->LanzarDialogo(); 08256 delete err; 08257 exit(1); 08258 } 08259 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08260 item->setPos(0, 0); 08261 item->setAcceptHoverEvents(false); 08262 a->portada->versionReducida->scene()->addItem(item); 08263 a->portada->versionReducida->setDragMode(QGraphicsView::RubberBandDrag); 08264 delete g; 08265 } 08266 08267 } 08268 08269 if(!this->activadaCarga){ 08270 barra->setValue(2); 08271 } 08272 if(this->a->portada->hayImagenTrasera()){ 08273 // Imagen Trasera 08274 QPixmap *h; 08275 try{ 08276 h=new QPixmap(a->portada->RutaFotoTrasera().toStdString().c_str()); 08277 if(h->isNull()){ 08278 throw std::ios_base::failure(tr("No pudo abrirse la imagen trasera de la portada.").toStdString()); 08279 } 08280 }catch(std::exception& e){ 08281 Error *err=new Error(4, e.what(), this); 08282 err->LanzarDialogo(); 08283 delete err; 08284 exit(1); 08285 } 08286 QGraphicsPixmapItem *item2; 08287 if(h->width() > h->height()){ 08288 if(a->portada->getImagenPosVertical("trasera")){ 08289 item2=new QGraphicsPixmapItem(h->scaled(a->portada->DimensionHImagenTrasera(), a->portada->DimensionWImagenTrasera(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08290 item2->setPos(a->portada->PosicionXImagenTrasera() + a->portada->DimensionWImagenTrasera(), a->portada->PosicionYImagenTrasera()); 08291 item2->setRotation(90); 08292 item2->setAcceptTouchEvents(true); 08293 }else{ 08294 item2=new QGraphicsPixmapItem(h->scaled(a->portada->DimensionWImagenTrasera(), a->portada->DimensionHImagenTrasera(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08295 item2->setPos(a->portada->PosicionXImagenTrasera(), a->portada->PosicionYImagenTrasera()); 08296 08297 } 08298 }else{ 08299 if(!a->portada->getImagenPosVertical("trasera")){ 08300 item2=new QGraphicsPixmapItem(h->scaled(a->portada->DimensionHImagenTrasera(), a->portada->DimensionWImagenTrasera(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08301 item2->setPos(a->portada->PosicionXImagenTrasera() + a->portada->DimensionWImagenTrasera(), a->portada->PosicionYImagenTrasera()); 08302 item2->setRotation(90); 08303 item2->setAcceptTouchEvents(true); 08304 }else{ 08305 item2=new QGraphicsPixmapItem(h->scaled(a->portada->DimensionWImagenTrasera(), a->portada->DimensionHImagenTrasera(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08306 item2->setPos(a->portada->PosicionXImagenTrasera(), a->portada->PosicionYImagenTrasera()); 08307 08308 } 08309 08310 } 08311 08312 if(!this->a->portada->activadaMascara()){ 08313 08314 item2->setAcceptHoverEvents(true); 08315 } 08316 a->portada->versionReducida->scene()->addItem(item2); 08317 delete h; 08318 08319 } 08320 if(!this->activadaCarga){ 08321 barra->setValue(3); 08322 } 08323 08324 if(this->a->portada->hayImagenFrontal()){ 08325 // Imagen Frontal 08326 QPixmap *i; 08327 try{ 08328 i=new QPixmap(a->portada->RutaFotoFrontal().toStdString().c_str()); 08329 if(i->isNull()){ 08330 throw std::ios_base::failure(tr("No pudo abrirse la imagen frontal de la portada.").toStdString()); 08331 } 08332 }catch(std::exception& e){ 08333 Error *err=new Error(4, e.what(), this); 08334 err->LanzarDialogo(); 08335 delete err; 08336 exit(1); 08337 } 08338 08339 08340 QGraphicsPixmapItem *item3; 08341 if(i->width() > i->height()){ 08342 if(a->portada->getImagenPosVertical("frontal")){ 08343 item3=new QGraphicsPixmapItem(i->scaled(a->portada->DimensionHImagenFrontal(), a->portada->DimensionWImagenFrontal(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08344 item3->setPos(a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal(), a->portada->PosicionYImagenFrontal()); 08345 item3->setRotation(90); 08346 item3->setAcceptTouchEvents(true); 08347 }else{ 08348 item3=new QGraphicsPixmapItem(i->scaled(a->portada->DimensionWImagenFrontal(), a->portada->DimensionHImagenFrontal(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08349 item3->setPos(a->portada->PosicionXImagenFrontal(), a->portada->PosicionYImagenFrontal()); 08350 08351 } 08352 }else{ 08353 if(!a->portada->getImagenPosVertical("frontal")){ 08354 item3=new QGraphicsPixmapItem(i->scaled(a->portada->DimensionHImagenFrontal(), a->portada->DimensionWImagenFrontal(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08355 item3->setPos(a->portada->PosicionXImagenFrontal() + a->portada->DimensionWImagenFrontal(), a->portada->PosicionYImagenFrontal()); 08356 item3->setRotation(90); 08357 item3->setAcceptTouchEvents(true); 08358 }else{ 08359 item3=new QGraphicsPixmapItem(i->scaled(a->portada->DimensionWImagenFrontal(), a->portada->DimensionHImagenFrontal(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08360 item3->setPos(a->portada->PosicionXImagenFrontal(), a->portada->PosicionYImagenFrontal()); 08361 08362 } 08363 08364 } 08365 if(!this->a->portada->activadaMascara()){ 08366 08367 item3->setAcceptHoverEvents(true); 08368 } 08369 //Indicamos que el visualizador se encuentra activo 08370 this->activadoVisualizadorPrincipal=true; 08371 a->portada->versionReducida->scene()->addItem(item3); 08372 delete i; 08373 } 08374 if(!this->activadaCarga){ 08375 barra->setValue(4); 08376 } 08377 08378 08379 if(this->a->portada->activadaMascara() && this->a->portada->ColordeFondo()){ 08380 08381 08382 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 08383 QImage *img=new QImage(path); 08384 QRgb color=this->a->portada->FondoClr().rgb(); 08385 for(int a=0; a < img->width(); a++){ 08386 for(int b=0; b < img->height(); b++){ 08387 if(img->pixel(a,b)!=0){ 08388 img->setPixel(a,b,color); 08389 } 08390 } 08391 } 08392 QPixmap *g=new QPixmap(); 08393 g->convertFromImage(*img, Qt::AutoColor); 08394 08395 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08396 item->setPos(0, 0); 08397 item->setAcceptHoverEvents(false); 08398 08399 this->a->portada->versionReducida->scene()->addItem(item); 08400 delete img; 08401 delete g; 08402 } 08403 08404 08405 if(this->a->portada->activadaMascara() && !this->a->portada->ColordeFondo()){ 08406 08407 QString path= this->directoriodetrabajo.absolutePath() + "/templates/" + this->a->portada->getMascara(); 08408 QImage *img=new QImage(path); 08409 QImage *img2=new QImage(this->a->portada->FondoImg()); 08410 QImage img22=img2->scaled(img->width(), img->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 08411 for(int a=0; a < img->width(); a++){ 08412 for(int b=0; b < img->height(); b++){ 08413 if(img->pixel(a,b)!=0){ 08414 img->setPixel(a,b,img22.pixel(a,b)); 08415 } 08416 } 08417 } 08418 QPixmap *g=new QPixmap(); 08419 08420 g->convertFromImage(*img, Qt::AutoColor); 08421 QGraphicsPixmapItem *item=new QGraphicsPixmapItem(g->scaled((this->controlador->getWVisorAlbum())-2, (this->controlador->getHVisorAlbum())-2, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08422 item->setPos(0, 0); 08423 item->setAcceptHoverEvents(false); 08424 this->a->portada->versionReducida->scene()->addItem(item); 08425 this->a->portada->versionReducida->setDragMode(QGraphicsView::RubberBandDrag); 08426 delete img; 08427 delete img2; 08428 delete g; 08429 08430 } 08431 08432 08433 if(this->a->portada->hayTextoFrontal()){ 08434 // Texto Frontal 08435 QGraphicsTextItem *TF=new QGraphicsTextItem(a->portada->TextoFrontal()); 08436 QFont *fuenteF=new QFont(a->portada->FuenteTextoFrontal().family(),a->portada->TamTextoFrontal(), 50, a->portada->CursivaTextoFrontal()); 08437 if(a->portada->NegritaTextoFrontal()){ 08438 fuenteF->setBold(true); 08439 } 08440 if(a->portada->SubrayadoTextoFrontal()){ 08441 fuenteF->setUnderline(true); 08442 } 08443 if(!this->activadaCarga){ 08444 barra->setValue(5); 08445 } 08446 TF->setDefaultTextColor(a->portada->ColorTextoFrontal()); 08447 TF->setFont(*fuenteF); 08448 TF->setTextWidth(a->portada->WTextoFrontal()); 08449 if(a->portada->VerticalTextoFrontal()){ 08450 TF->setRotation(90); 08451 } 08452 TF->setPos(a->portada->PosXTextoFrontal(), a->portada->PosYTextoFrontal()); 08453 if(a->portada->CentradoTextoFrontal()){ 08454 // Para centrar el texto 08455 QTextCursor cursor = TF->textCursor(); 08456 QTextBlockFormat bfmt = cursor.blockFormat(); 08457 bfmt.setAlignment(Qt::AlignCenter); 08458 cursor.setBlockFormat(bfmt); 08459 TF->setTextCursor(cursor); 08460 } 08461 TF->setAcceptHoverEvents(true); 08462 a->portada->versionReducida->scene()->addItem(TF); 08463 delete fuenteF; 08464 } 08465 if(!this->activadaCarga){ 08466 barra->setValue(6); 08467 } 08468 08469 if(this->a->portada->hayTextoTrasero()){ 08470 // Texto Trasero 08471 QGraphicsTextItem *TT=new QGraphicsTextItem(a->portada->TextoTrasera()); 08472 QFont *fuenteT=new QFont(a->portada->FuenteTextoTrasera().family(),a->portada->TamTextoTrasera(), 50, a->portada->CursivaTextoTrasera()); 08473 if(a->portada->NegritaTextoTrasera()){ 08474 fuenteT->setBold(true); 08475 } 08476 if(!this->activadaCarga){ 08477 barra->setValue(7); 08478 } 08479 if(a->portada->SubrayadoTextoTrasera()){ 08480 fuenteT->setUnderline(true); 08481 } 08482 TT->setFont(*fuenteT); 08483 TT->setTextWidth(a->portada->WTextoTrasera()); 08484 if(a->portada->VerticalTextoTrasera()){ 08485 TT->setRotation(90); 08486 } 08487 TT->setPos(a->portada->PosXTextoTrasera(), a->portada->PosYTextoTrasera()); 08488 TT->setDefaultTextColor(a->portada->ColorTextoTrasera()); 08489 if(a->portada->CentradoTextoTrasera()){ 08490 // Para centrar el texto 08491 QTextCursor cursorT = TT->textCursor(); 08492 QTextBlockFormat bfmtT = cursorT.blockFormat(); 08493 bfmtT.setAlignment(Qt::AlignCenter); 08494 cursorT.setBlockFormat(bfmtT); 08495 TT->setTextCursor(cursorT); 08496 } 08497 if(!this->activadaCarga){ 08498 barra->setValue(8); 08499 } 08500 TT->setAcceptHoverEvents(true); 08501 a->portada->versionReducida->scene()->addItem(TT); 08502 delete fuenteT; 08503 } 08504 if(this->ui->actionLineaSeparacionPortada->isChecked()){ 08505 a->portada->versionReducida->scene()->addLine(213*(this->controlador->getWVisorAlbum())/462, 2, 213*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 08506 a->portada->versionReducida->scene()->addLine(245*(this->controlador->getWVisorAlbum())/462, 2, 245*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 08507 } 08508 08509 if(this->a->portada->hayTextoLateral()){ 08510 // Texto Lateral 08511 QGraphicsTextItem *TL=new QGraphicsTextItem(a->portada->TextoLateral()); 08512 QFont *fuenteL=new QFont(a->portada->FuenteTextoLateral().family(),a->portada->TamTextoLateral(), 50, a->portada->CursivaTextoLateral()); 08513 if(a->portada->NegritaTextoLateral()){ 08514 fuenteL->setBold(true); 08515 } 08516 if(!this->activadaCarga){ 08517 barra->setValue(9); 08518 } 08519 if(a->portada->SubrayadoTextoLateral()){ 08520 fuenteL->setUnderline(true); 08521 } 08522 TL->setFont(*fuenteL); 08523 if(a->portada->VerticalTextoLateral()){ 08524 TL->setRotation(90); 08525 } 08526 TL->setPos(a->portada->PosXTextoLateral(), a->portada->PosYTextoLateral()); 08527 TL->setDefaultTextColor(a->portada->ColorTextoLateral()); 08528 if(a->portada->CentradoTextoLateral()){ 08529 // Para centrar el texto 08530 QTextCursor cursorL = TL->textCursor(); 08531 QTextBlockFormat bfmtL = cursorL.blockFormat(); 08532 bfmtL.setAlignment(Qt::AlignCenter); 08533 cursorL.setBlockFormat(bfmtL); 08534 TL->setTextCursor(cursorL); 08535 } 08536 08537 TL->setAcceptHoverEvents(true); 08538 a->portada->versionReducida->scene()->addItem(TL); 08539 delete fuenteL; 08540 } 08541 a->portada->setObjetosPortada(a->portada->versionReducida->items()); 08542 if(!this->activadaCarga){ 08543 barra->setValue(10); 08544 } 08545 ui->pushButtonEditar->show(); 08546 ui->actionEditar->setEnabled(true); 08547 ui->actionEditarBoton->setEnabled(true); 08548 ui->pushButtonEditarPagina->hide(); 08549 ui->pushButtonTerminar->setEnabled(false); 08550 ui->actionTerminar_edici_n->setDisabled(true); 08551 ui->actionTerminarBoton->setDisabled(true); 08552 ui->pushButtonTerminar->show(); 08553 ui->pushButtonTerminarPagina->hide(); 08554 QGraphicsView *copia; 08555 try{ 08556 copia=new QGraphicsView(a->portada->versionReducida); 08557 }catch(std::exception& e){ 08558 Error *err=new Error(2, e.what(), this); 08559 err->LanzarDialogo(); 08560 delete err; 08561 exit(1); 08562 } 08563 copia=a->portada->versionReducida; 08564 ui->visorAlbum->setScene(copia->scene()); 08565 08566 08567 08568 if(!this->activadaCarga){ 08569 barra->setValue(11); 08570 } 08571 08572 if(!this->activadaCarga){ 08573 barra->setValue(12); 08574 } 08575 08576 if(!this->activadaCarga){ 08577 barra->setValue(13); 08578 } 08579 08580 if(!this->activadaCarga){ 08581 barra->setValue(14); 08582 } 08583 08584 if(!this->activadaCarga){ 08585 barra->setValue(15); 08586 } 08587 08588 if(!this->activadaCarga){ 08589 barra->setValue(16); 08590 } 08591 if(!this->creadasPaginas){ 08592 ui->pushOpen->setEnabled(true); 08593 ui->actionAnnadirBoton->setEnabled(true); 08594 ui->actionA_adir_im_genes->setEnabled(true); 08595 } 08596 08597 08598 ui->actionTama_o->setEnabled(true); 08599 ui->actionEditarTamBoton->setEnabled(true); 08600 ui->action_Nuevo->setEnabled(true); 08601 ui->actionNuevoBoton->setEnabled(true); 08602 ui->action_Guardar->setEnabled(true); 08603 ui->actionGuardarBoton->setEnabled(true); 08604 ui->actionG_uardar_como->setEnabled(true); 08605 ui->actionGuardarComoBoton->setEnabled(true); 08606 this->creadaPortada=true; 08607 ui->actionE_xportar->setEnabled(true); 08608 ui->actionExportarJPGBoton->setEnabled(true); 08609 ui->actionExportarPDFBoton->setEnabled(true); 08610 ui->actionI_mprimir->setEnabled(true); 08611 ui->actionImprimirBoton->setEnabled(true); 08612 if(!this->activadaCarga){ 08613 barra->setValue(17); 08614 delete barra; 08615 } 08616 this->ui->selectFoto1->setDisabled(true); 08617 this->ui->selectFoto2->setDisabled(true); 08618 this->ui->botonPrueba->setDisabled(true); 08619 this->ui->pushButtonFondoPortada->setDisabled(true); 08620 this->ui->botonTexto->setDisabled(true); 08621 this->ui->selectorPlantilla->setDisabled(true); 08622 this->ui->plantillaPreview->setDisabled(true); 08623 this->ui->action_Lanzar_asistente->setDisabled(true); 08624 this->ui->actionWizardBoton->setDisabled(true); 08625 this->mostrandosePaginaActualmente=false; 08626 QDate fechaSys; 08627 QTime horaSys; 08628 this->fechaCreacion=fechaSys.currentDate().toString(Qt::ISODate); 08629 this->fechaCreacion.append(" "); 08630 this->fechaCreacion.append(horaSys.currentTime().toString(Qt::ISODate)); 08631 this->ui->action_Propiedades->setEnabled(true); 08632 this->ui->actionPropiedadesBoton->setEnabled(true); 08633 08634 08635 QGraphicsScene *escenaPrev; 08636 QImage *imgPrev; 08637 08638 try{ 08639 escenaPrev = new QGraphicsScene(); 08640 this->ui->imagePreview->setScene(escenaPrev); 08641 imgPrev = new QImage(); 08642 }catch(std::exception& e){ 08643 Error *err=new Error(2, e.what(), this); 08644 err->LanzarDialogo(); 08645 delete err; 08646 exit(1); 08647 } 08648 try{ 08649 imgPrev->load(this->directoriodetrabajo.absolutePath() + "/data/imagePrevCol.png"); 08650 if(imgPrev->isNull()){ 08651 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 08652 } 08653 }catch(std::exception& e){ 08654 Error *err=new Error(4, e.what(), this); 08655 err->LanzarDialogo(); 08656 delete err; 08657 exit(1); 08658 } 08659 08660 QPixmap imagePrev=QPixmap::fromImage(*imgPrev); 08661 08662 this->ui->imagePreview->scene()->addPixmap(imagePrev.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 08663 this->ui->imagePreview->setStyleSheet("background: transparent; border: none"); 08664 delete imgPrev; 08665 08666 08667 Parser par(this->a->portada->RutaPlantilla().toStdString(), this); 08668 ticpp::Element* elementAux=par.root(); 08669 std::string resultado=par.get_attribute("editable", elementAux); 08670 if(resultado=="no"){ 08671 this->ui->pushButtonEditar->setDisabled(true); 08672 08673 } 08674 this->nadacreado=false; 08675 } 08676 08677 void FormPrincipal::DesactivarEdicionPagina(){ 08678 this->IndicePaginas--; 08679 08680 if(IndicePaginas < a->paginas.size()-1){ 08681 ui->pushPagSiguiente->setEnabled(true); 08682 ui->action_Avanzar_P_gina->setEnabled(true); 08683 ui->actionAvanzarBoton->setEnabled(true); 08684 } 08685 if(IndicePaginas > 0 || IndicePaginas == 0){ 08686 ui->pushPagAnterior->setEnabled(true); 08687 ui->action_Retroceder_p_gina->setEnabled(true); 08688 ui->actionRetrocederBoton->setEnabled(true); 08689 } 08690 ui->pushButtonTerminarPagina->setEnabled(false); 08691 ui->pushButtonEditarPagina->setEnabled(true); 08692 ui->actionEditar->setEnabled(true); 08693 ui->actionEditarBoton->setEnabled(true); 08694 ui->actionTerminar_edici_n->setDisabled(true); 08695 ui->actionTerminarBoton->setDisabled(true); 08696 08697 08698 ui->action_Nuevo->setEnabled(true); 08699 ui->actionNuevoBoton->setEnabled(true); 08700 ui->actionCar_gar->setEnabled(true); 08701 ui->actionAbrirBoton->setEnabled(true); 08702 ui->actionGuardarBoton->setEnabled(true); 08703 ui->actionGuardarComoBoton->setEnabled(true); 08704 ui->action_Guardar->setEnabled(true); 08705 ui->actionG_uardar_como->setEnabled(true); 08706 ui->actionE_xportar->setEnabled(true); 08707 ui->actionExportacion->setEnabled(true); 08708 ui->actionExportarJPGBoton->setEnabled(true); 08709 ui->actionExportarPDFBoton->setEnabled(true); 08710 ui->actionI_mprimir->setEnabled(true); 08711 ui->actionImprimirBoton->setEnabled(true); 08712 ui->menu_Archivo->setEnabled(true); 08713 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 08714 08715 a->paginas[IndicePaginas]->versionReducida->scene()->removeItem(a->paginas[IndicePaginas]->versionReducida->scene()->itemAt(231*(this->controlador->getWVisorAlbum())/462, 2)); 08716 08717 } 08718 QList<QGraphicsItem*> lista = ui->visorAlbum->items(); 08719 08720 08721 bool avisoActivado=false; 08722 tipoLista listaX, listaY; 08723 tipoPosicionesItems auxiliarItems; 08724 08725 for(int i=0; i<lista.size(); i++) 08726 { 08727 try{ 08728 if(lista.at(i)->acceptHoverEvents()){ 08729 if(!lista.at(i)->acceptTouchEvents()){ 08730 08731 float posx=lista.at(i)->x(); 08732 float posy=lista.at(i)->y(); 08733 tipoCoordenadas auxiliar; 08734 if(lista.at(i)->type()==7){ 08735 08736 float wItem=lista.at(i)->boundingRect().width(); 08737 float hItem=lista.at(i)->boundingRect().height(); 08738 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 08739 08740 posxNueva1=posx; 08741 posxNueva2=posx; 08742 posyNueva1=posy; 08743 posyNueva2=posy; 08744 if((wItem+posxNueva1)>463*(this->controlador->getWVisorAlbum())/462){ 08745 avisoActivado=true; 08746 coef=(wItem+posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 08747 posx=posxNueva1-coef; 08748 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08749 } 08750 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 08751 avisoActivado=true; 08752 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 08753 posy=posyNueva1-coef; 08754 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08755 } 08756 if(posxNueva2 < 0){ 08757 avisoActivado=true; 08758 coef= 0-posxNueva2; 08759 posx= posxNueva2 + coef; 08760 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08761 08762 } 08763 if(posyNueva2 < 0){ 08764 avisoActivado=true; 08765 coef= 0-posyNueva2; 08766 posy= posyNueva2 + coef; 08767 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08768 08769 } 08770 08771 08772 auxiliar.tipo=7; 08773 auxiliar.x=posx; 08774 auxiliar.y=posy; 08775 auxiliarItems.insert(i, auxiliar); 08776 } 08777 if(lista.at(i)->type()==8){ 08778 float wItem=lista.at(i)->boundingRect().width(); 08779 float hItem=lista.at(i)->boundingRect().height(); 08780 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 08781 08782 posxNueva1=posx; 08783 posxNueva2=posx; 08784 posyNueva1=posy; 08785 posyNueva2=posy; 08786 if((wItem+posxNueva1)>463*(this->controlador->getWVisorAlbum())/462){ 08787 avisoActivado=true; 08788 coef=(wItem+posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 08789 posx=posxNueva1-coef; 08790 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08791 } 08792 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 08793 avisoActivado=true; 08794 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 08795 posy=posyNueva1-coef; 08796 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08797 } 08798 if(posxNueva2 < 0){ 08799 avisoActivado=true; 08800 coef= 0-posxNueva2; 08801 posx= posxNueva2 + coef; 08802 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08803 08804 } 08805 if(posyNueva2 < 0){ 08806 avisoActivado=true; 08807 coef= 0-posyNueva2; 08808 posy= posyNueva2 + coef; 08809 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08810 08811 } 08812 08813 08814 auxiliar.tipo=8; 08815 auxiliar.x=posx; 08816 auxiliar.y=posy; 08817 auxiliarItems.insert(i, auxiliar); 08818 } 08819 08820 08821 08822 a->paginas[IndicePaginas]->versionReducida->items().at(i)->setPos(posx, posy); 08823 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false); 08824 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, false); 08825 }else{ 08826 float posx=lista.at(i)->x(); 08827 float posy=lista.at(i)->y(); 08828 tipoCoordenadas auxiliar; 08829 if(lista.at(i)->type()==7){ 08830 08831 float hItem=lista.at(i)->boundingRect().width(); 08832 float wItem=lista.at(i)->boundingRect().height(); 08833 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 08834 08835 posxNueva1=posx; 08836 posxNueva2=posx; 08837 posyNueva1=posy; 08838 posyNueva2=posy; 08839 if(posxNueva1>463*(this->controlador->getWVisorAlbum())/462){ 08840 avisoActivado=true; 08841 coef=(posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 08842 posx=posxNueva1-coef; 08843 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08844 } 08845 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 08846 avisoActivado=true; 08847 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 08848 posy=posyNueva1-coef; 08849 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08850 } 08851 if((posxNueva2 - wItem)< 0){ 08852 avisoActivado=true; 08853 coef= 0-(posxNueva2 - wItem); 08854 posx= posxNueva2 + coef; 08855 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08856 08857 } 08858 if(posyNueva2 < 0){ 08859 avisoActivado=true; 08860 coef= 0-posyNueva2; 08861 posy= posyNueva2 + coef; 08862 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08863 08864 } 08865 08866 08867 auxiliar.tipo=7; 08868 auxiliar.x=posx; 08869 auxiliar.y=posy; 08870 auxiliarItems.insert(i, auxiliar); 08871 } 08872 if(lista.at(i)->type()==8){ 08873 float wItem=lista.at(i)->boundingRect().width(); 08874 float hItem=lista.at(i)->boundingRect().height(); 08875 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 08876 08877 posxNueva1=posx; 08878 posxNueva2=posx; 08879 posyNueva1=posy; 08880 posyNueva2=posy; 08881 if(posxNueva1>463*(this->controlador->getWVisorAlbum())/462){ 08882 avisoActivado=true; 08883 coef=(posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 08884 posx=posxNueva1-coef; 08885 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08886 } 08887 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 08888 avisoActivado=true; 08889 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 08890 posy=posyNueva1-coef; 08891 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08892 } 08893 if((posxNueva2 - wItem)< 0){ 08894 avisoActivado=true; 08895 coef= 0-(posxNueva2 - wItem); 08896 posx= posxNueva2 + coef; 08897 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08898 08899 } 08900 if(posyNueva2 < 0){ 08901 avisoActivado=true; 08902 coef= 0-posyNueva2; 08903 posy= posyNueva2 + coef; 08904 ui->visorAlbum->items().at(i)->setPos(posx, posy); 08905 08906 } 08907 08908 08909 auxiliar.tipo=8; 08910 auxiliar.x=posx; 08911 auxiliar.y=posy; 08912 auxiliarItems.insert(i, auxiliar); 08913 } 08914 08915 08916 08917 a->paginas[IndicePaginas]->versionReducida->items().at(i)->setPos(posx, posy); 08918 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false); 08919 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, false); 08920 } 08921 } 08922 }catch(std::exception& e){ 08923 Error *err=new Error(1, e.what(), this); 08924 err->LanzarDialogo(); 08925 delete err; 08926 exit(1); 08927 } 08928 08929 08930 } 08931 this->posicionesItemsPaginas.replace(IndicePaginas, auxiliarItems); 08932 08933 08934 if(avisoActivado){ 08935 08936 QMessageBox::question(this, tr("Advertencia"), tr("Ha colocado uno o varios elementos fuera de la región de edición de la página. El sistema los recolocará automaticamente dentro de la página."), QMessageBox::Ok); 08937 08938 } 08939 try{ 08940 a->paginas[IndicePaginas]->SetPaginaEditada(); 08941 QString texto9; 08942 this->paginasDesplazadas.insert(IndicePaginas, texto9); 08943 if(this->a->GetPagina(IndicePaginas)->GetPaginaEditada()){ 08944 this->hayDesplazamientoPagina=true; 08945 texto9=" <Desplazamientos pagina=\"" + QString::number(IndicePaginas) + "\">\n"; 08946 for(int h=0; h <auxiliarItems.size(); h++){ 08947 texto9= texto9 + " <Desplazamiento posx=\"" + QString::number(auxiliarItems.at(h).x) + "\" posy=\"" + QString::number(auxiliarItems.at(h).y) + "\"/>\n"; 08948 } 08949 texto9= texto9 + " </Desplazamientos>\n"; 08950 08951 } 08952 08953 this->paginasDesplazadas.replace(IndicePaginas, texto9); 08954 08955 a->paginas[IndicePaginas]->setObjetosPagina(ui->visorAlbum->items()); 08956 if(this->ui->actionLineaSeparacionPaginas->isChecked()){ 08957 a->paginas[IndicePaginas]->versionReducida->scene()->addLine(231*(this->controlador->getWVisorAlbum())/462, 2, 231*(this->controlador->getWVisorAlbum())/462, 318*(this->controlador->getHVisorAlbum())/321)->setAcceptHoverEvents(false); 08958 08959 } 08960 }catch(std::exception& e){ 08961 Error *err=new Error(1, e.what(), this); 08962 err->LanzarDialogo(); 08963 delete err; 08964 exit(1); 08965 } 08966 08967 this->IndicePaginas++; 08968 08969 } 08970 08971 void FormPrincipal::DesactivarEdicion(){ 08972 ui->pushButtonTerminar->setEnabled(false); 08973 ui->pushButtonEditar->setEnabled(true); 08974 08975 ui->actionEditar->setEnabled(true); 08976 ui->actionEditarBoton->setEnabled(true); 08977 ui->actionTerminar_edici_n->setDisabled(true); 08978 ui->actionTerminarBoton->setDisabled(true); 08979 08980 ui->action_Nuevo->setEnabled(true); 08981 ui->actionNuevoBoton->setEnabled(true); 08982 ui->actionCar_gar->setEnabled(true); 08983 ui->actionAbrirBoton->setEnabled(true); 08984 ui->actionGuardarBoton->setEnabled(true); 08985 ui->actionGuardarComoBoton->setEnabled(true); 08986 ui->action_Guardar->setEnabled(true); 08987 ui->actionG_uardar_como->setEnabled(true); 08988 ui->actionE_xportar->setEnabled(true); 08989 ui->actionExportacion->setEnabled(true); 08990 ui->actionExportarJPGBoton->setEnabled(true); 08991 ui->actionExportarPDFBoton->setEnabled(true); 08992 ui->actionI_mprimir->setEnabled(true); 08993 ui->actionImprimirBoton->setEnabled(true); 08994 ui->menu_Archivo->setEnabled(true); 08995 if(this->creadasPaginas){ 08996 ui->pushPagSiguiente->setEnabled(true); 08997 ui->action_Avanzar_P_gina->setEnabled(true); 08998 ui->actionAvanzarBoton->setEnabled(true); 08999 } 09000 QList<QGraphicsItem*> lista = ui->visorAlbum->items(); 09001 09002 if(this->DesactivarParteEdicionPortada){ 09003 09004 this->portadaDesplazada.clear(); 09005 } 09006 bool avisoActivado=false; 09007 for(int i=0; i<lista.size(); i++) 09008 { 09009 try{ 09010 if(lista.at(i)->acceptHoverEvents()){ 09011 if(!lista.at(i)->acceptTouchEvents()){ 09012 float posx=lista.at(i)->x(); 09013 float posy=lista.at(i)->y(); 09014 09015 09016 09017 if(lista.at(i)->type()==7){ 09018 09019 09020 float wItem=lista.at(i)->boundingRect().width(); 09021 float hItem=lista.at(i)->boundingRect().height(); 09022 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 09023 09024 posxNueva1=posx; 09025 posxNueva2=posx; 09026 posyNueva1=posy; 09027 posyNueva2=posy; 09028 09029 if((wItem+posxNueva1)>463*(this->controlador->getWVisorAlbum())/462){ 09030 avisoActivado=true; 09031 coef=(wItem+posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 09032 posx=posxNueva1-coef; 09033 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09034 } 09035 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 09036 avisoActivado=true; 09037 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 09038 posy=posyNueva1-coef; 09039 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09040 } 09041 if(posxNueva2 < 0){ 09042 avisoActivado=true; 09043 coef= 0-posxNueva2; 09044 posx= posxNueva2 + coef; 09045 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09046 09047 } 09048 if(posyNueva2 < 0){ 09049 avisoActivado=true; 09050 coef= 0-posyNueva2; 09051 posy= posyNueva2 + coef; 09052 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09053 09054 } 09055 09056 this->hayDesplazamientoPortadaFotos=true; 09057 tipoCoordenadas auxiliar; 09058 auxiliar.x=posx; 09059 auxiliar.tipo=7; 09060 auxiliar.y=posy; 09061 this->posicionesItemsPortada.insert(i, auxiliar); 09062 this->posXFotoDesplazadaPortada.insert(i,posx); 09063 this->posYFotoDesplazadaPortada.insert(i, posy); 09064 } 09065 if(lista.at(i)->type()==8){ 09066 09067 float wItem, hItem; 09068 if(i==0){ 09069 //Esto lo hacemos porque el texto lateral está en vertical 09070 hItem=lista.at(i)->boundingRect().width(); 09071 wItem=lista.at(i)->boundingRect().height(); 09072 }else{ 09073 wItem=lista.at(i)->boundingRect().width(); 09074 hItem=lista.at(i)->boundingRect().height(); 09075 } 09076 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 09077 09078 posxNueva1=posx; 09079 posxNueva2=posx; 09080 posyNueva1=posy; 09081 posyNueva2=posy; 09082 if(i==0){ 09083 09084 if(posxNueva1>463*(this->controlador->getWVisorAlbum())/462){ 09085 09086 avisoActivado=true; 09087 coef=(posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 09088 posx=posxNueva1-coef; 09089 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09090 } 09091 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 09092 avisoActivado=true; 09093 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 09094 posy=posyNueva1-coef; 09095 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09096 } 09097 if((posxNueva2-wItem) < 0){ 09098 avisoActivado=true; 09099 coef= 0-(posxNueva2-wItem); 09100 posx= posxNueva2 + coef; 09101 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09102 09103 } 09104 if(posyNueva2 < 0){ 09105 avisoActivado=true; 09106 coef= 0-posyNueva2; 09107 posy= posyNueva2 + coef; 09108 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09109 09110 } 09111 09112 09113 09114 }else{ 09115 09116 09117 if((wItem+posxNueva1)>463*(this->controlador->getWVisorAlbum())/462){ 09118 09119 avisoActivado=true; 09120 coef=(wItem+posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 09121 posx=posxNueva1-coef; 09122 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09123 } 09124 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 09125 avisoActivado=true; 09126 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 09127 posy=posyNueva1-coef; 09128 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09129 } 09130 if(posxNueva2 < 0){ 09131 avisoActivado=true; 09132 coef= 0-posxNueva2; 09133 posx= posxNueva2 + coef; 09134 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09135 09136 } 09137 if(posyNueva2 < 0){ 09138 avisoActivado=true; 09139 coef= 0-posyNueva2; 09140 posy= posyNueva2 + coef; 09141 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09142 09143 } 09144 } 09145 this->hayDesplazamientoPortadaTextos=true; 09146 tipoCoordenadas auxiliar; 09147 auxiliar.x=posx; 09148 auxiliar.tipo=8; 09149 auxiliar.y=posy; 09150 this->posicionesItemsPortada.insert(i, auxiliar); 09151 this->posXTextoDesplazadoPortada.insert(i, posx); 09152 this->posYTextoDesplazadoPortada.insert(i, posy); 09153 } 09154 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false); 09155 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, false); 09156 09157 }else{ 09158 float posx=lista.at(i)->x(); 09159 float posy=lista.at(i)->y(); 09160 tipoCoordenadas auxiliar; 09161 if(lista.at(i)->type()==7){ 09162 09163 float hItem=lista.at(i)->boundingRect().width(); 09164 float wItem=lista.at(i)->boundingRect().height(); 09165 float coef, posxNueva1, posxNueva2, posyNueva1, posyNueva2; 09166 09167 posxNueva1=posx; 09168 posxNueva2=posx; 09169 posyNueva1=posy; 09170 posyNueva2=posy; 09171 if(posxNueva1>463*(this->controlador->getWVisorAlbum())/462){ 09172 avisoActivado=true; 09173 coef=(posxNueva1)-463*(this->controlador->getWVisorAlbum())/462; 09174 posx=posxNueva1-coef; 09175 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09176 } 09177 if((hItem+posyNueva1)>322*(this->controlador->getHVisorAlbum())/321){ 09178 avisoActivado=true; 09179 coef=(hItem+posyNueva1)-322*(this->controlador->getHVisorAlbum())/321; 09180 posy=posyNueva1-coef; 09181 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09182 } 09183 if((posxNueva2 - wItem)< 0){ 09184 avisoActivado=true; 09185 coef= 0-(posxNueva2 - wItem); 09186 posx= posxNueva2 + coef; 09187 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09188 09189 } 09190 if(posyNueva2 < 0){ 09191 avisoActivado=true; 09192 coef= 0-posyNueva2; 09193 posy= posyNueva2 + coef; 09194 ui->visorAlbum->items().at(i)->setPos(posx, posy); 09195 09196 } 09197 09198 09199 auxiliar.tipo=7; 09200 auxiliar.x=posx; 09201 auxiliar.y=posy; 09202 09203 this->posicionesItemsPortada.insert(i, auxiliar); 09204 this->posXFotoDesplazadaPortada.insert(i,posx); 09205 this->posYFotoDesplazadaPortada.insert(i, posy); 09206 } 09207 09208 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false); 09209 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, false); 09210 } 09211 09212 } 09213 }catch(std::exception& e){ 09214 Error *err=new Error(1, e.what(), this); 09215 err->LanzarDialogo(); 09216 delete err; 09217 exit(1); 09218 } 09219 } 09220 if(avisoActivado){ 09221 09222 QMessageBox::question(this, tr("Advertencia"), tr("Ha colocado uno o varios elementos fuera de la región de edición de la portada. El sistema los recolocará automaticamente dentro de la portada."), QMessageBox::Ok); 09223 09224 } 09225 09226 QString texto9; 09227 texto9=""; 09228 09229 try{ 09230 for(int h=0; h <this->posicionesItemsPortada.size() ; h++){ 09231 texto9= texto9 + " <DesplazamientoPortada posx=\"" + QString::number(this->posicionesItemsPortada[h].x) + "\" posy=\"" + QString::number(this->posicionesItemsPortada[h].y) + "\"/>\n"; 09232 } 09233 }catch(std::exception& e){ 09234 Error *err=new Error(1, e.what(), this); 09235 err->LanzarDialogo(); 09236 delete err; 09237 exit(1); 09238 } 09239 09240 this->portadaDesplazada= texto9; 09241 a->portada->setObjetosPortada(ui->visorAlbum->items()); 09242 } 09243 09244 09245 void FormPrincipal::ActivarEdicionPagina(){ 09246 try{ 09247 ui->pushPagSiguiente->setDisabled(true); 09248 ui->action_Avanzar_P_gina->setDisabled(true); 09249 ui->actionAvanzarBoton->setDisabled(true); 09250 ui->pushPagAnterior->setDisabled(true); 09251 ui->action_Retroceder_p_gina->setDisabled(true); 09252 ui->actionRetrocederBoton->setDisabled(true); 09253 ui->action_Nuevo->setDisabled(true); 09254 ui->actionNuevoBoton->setDisabled(true); 09255 ui->actionCar_gar->setDisabled(true); 09256 ui->actionAbrirBoton->setDisabled(true); 09257 ui->actionGuardarBoton->setDisabled(true); 09258 ui->actionGuardarComoBoton->setDisabled(true); 09259 ui->action_Guardar->setDisabled(true); 09260 ui->actionG_uardar_como->setDisabled(true); 09261 ui->actionE_xportar->setDisabled(true); 09262 ui->actionExportacion->setDisabled(true); 09263 ui->actionExportarJPGBoton->setDisabled(true); 09264 ui->actionExportarPDFBoton->setDisabled(true); 09265 ui->actionI_mprimir->setDisabled(true); 09266 ui->actionImprimirBoton->setDisabled(true); 09267 ui->menu_Archivo->setDisabled(true); 09268 09269 09270 if(!this->posicionesItemsPaginas.isEmpty()){ 09271 if(this->a->paginas[IndicePaginas-1]->GetPaginaEditada()){ 09272 this->paginasDesplazadas[IndicePaginas-1].clear(); 09273 this->posicionesItemsPaginas[IndicePaginas-1].clear(); 09274 } 09275 } 09276 ui->pushButtonEditarPagina->setEnabled(false); 09277 ui->actionEditar->setDisabled(true); 09278 ui->actionEditarBoton->setDisabled(true); 09279 ui->pushButtonTerminarPagina->setEnabled(true); 09280 ui->actionTerminar_edici_n->setEnabled(true); 09281 ui->actionTerminarBoton->setEnabled(true); 09282 QList<QGraphicsItem*> lista = ui->visorAlbum->items(); 09283 for(int i=0; i<lista.size(); i++) 09284 { 09285 if(lista.at(i)->acceptHoverEvents()){ 09286 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, true); 09287 lista.at(i)->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); 09288 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, true); 09289 } 09290 } 09291 }catch(std::exception& e){ 09292 Error *err=new Error(1, e.what(), this); 09293 err->LanzarDialogo(); 09294 delete err; 09295 exit(1); 09296 } 09297 09298 } 09299 09300 QVariant QGraphicsItem::itemChange(GraphicsItemChange change, const QVariant &value) 09301 { 09302 if (change == ItemPositionChange && scene()) { 09303 // value es la nueva posición 09304 QPointF newPos = value.toPointF(); 09305 QRectF rect = scene()->sceneRect(); 09306 09307 if (!rect.contains(newPos)) { 09308 09309 newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left()))); 09310 newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top()))); 09311 return newPos; 09312 } 09313 } 09314 return QGraphicsItem::itemChange(change, value); 09315 } 09316 09317 09318 void FormPrincipal::ActivarEdicion(){ 09319 09320 ui->pushButtonEditar->setEnabled(false); 09321 ui->actionEditar->setDisabled(true); 09322 ui->actionEditarBoton->setDisabled(true); 09323 ui->actionTerminar_edici_n->setEnabled(true); 09324 ui->actionTerminarBoton->setEnabled(true); 09325 ui->pushButtonTerminar->setEnabled(true); 09326 ui->pushPagSiguiente->setDisabled(true); 09327 ui->action_Avanzar_P_gina->setDisabled(true); 09328 ui->actionAvanzarBoton->setDisabled(true); 09329 ui->action_Nuevo->setDisabled(true); 09330 ui->actionNuevoBoton->setDisabled(true); 09331 ui->actionCar_gar->setDisabled(true); 09332 ui->actionAbrirBoton->setDisabled(true); 09333 ui->actionGuardarBoton->setDisabled(true); 09334 ui->actionGuardarComoBoton->setDisabled(true); 09335 ui->action_Guardar->setDisabled(true); 09336 ui->actionG_uardar_como->setDisabled(true); 09337 ui->actionE_xportar->setDisabled(true); 09338 ui->actionExportacion->setDisabled(true); 09339 ui->actionExportarJPGBoton->setDisabled(true); 09340 ui->actionExportarPDFBoton->setDisabled(true); 09341 ui->actionI_mprimir->setDisabled(true); 09342 ui->actionImprimirBoton->setDisabled(true); 09343 ui->menu_Archivo->setDisabled(true); 09344 this->edicionPortadaFinalX.clear(); 09345 this->edicionPortadaFinalY.clear(); 09346 this->posicionesItemsPortada.clear(); 09347 this->portadaDesplazada=""; 09348 QList<QGraphicsItem*> lista = ui->visorAlbum->items(); 09349 this->a->portada->ActivarEdicion(); 09350 try{ 09351 for(int i=0; i<lista.size(); i++) 09352 { 09353 if(lista.at(i)->acceptHoverEvents()){ 09354 lista.at(i)->setFlag(QGraphicsItem::ItemIsMovable, true); 09355 lista.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, true); 09356 lista.at(i)->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); 09357 lista.at(i)->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); 09358 } 09359 } 09360 }catch(std::exception& e){ 09361 Error *err=new Error(1, e.what(), this); 09362 err->LanzarDialogo(); 09363 delete err; 09364 exit(1); 09365 } 09366 } 09367 09368 void FormPrincipal::openFiles(bool wizard) 09369 { 09370 if(!wizard){ 09371 iAList.clear(); 09372 addFiles(); 09373 ui->pushCheckAll->setEnabled(true); 09374 ui->actionSeleccionarTodoBoton->setEnabled(true); 09375 ui->actionSeleccionar_todo->setEnabled(true); 09376 ui->pushRemoveSelect->setEnabled(true); 09377 this->ui->actionBorrar_selecci_n->setEnabled(true); 09378 this->ui->actionEliminarFotosBoton->setEnabled(true); 09379 ui->pushUncheckAll->setEnabled(true); 09380 ui->actionDeseleccionarTodoBoton->setEnabled(true); 09381 this->ui->actionDeseleccionar_todo->setEnabled(true); 09382 ui->pushCrearPaginas->setEnabled(true); 09383 }else{ 09384 iAList.clear(); 09385 addFiles(true); 09386 this->fotos->ui->pushCheckAll->setEnabled(true); 09387 ui->actionSeleccionarTodoBoton->setEnabled(true); 09388 ui->actionSeleccionar_todo->setEnabled(true); 09389 this->fotos->ui->pushRemoveSelect->setEnabled(true); 09390 this->ui->actionBorrar_selecci_n->setEnabled(true); 09391 this->ui->actionEliminarFotosBoton->setEnabled(true); 09392 this->fotos->ui->pushUncheckAll->setEnabled(true); 09393 ui->actionDeseleccionarTodoBoton->setEnabled(true); 09394 this->ui->actionDeseleccionar_todo->setEnabled(true); 09395 this->fotos->ui->pushIntroImagenes->setEnabled(true); 09396 } 09397 } 09398 09399 void FormPrincipal::visualizarPlantilla(bool wizard){ 09400 if(!wizard){ 09401 this->preguntaSeguridad=true; 09402 QGraphicsScene *scene; 09403 try{ 09404 scene= new QGraphicsScene(); 09405 }catch(std::exception& e){ 09406 Error *err=new Error(2, e.what(), this); 09407 err->LanzarDialogo(); 09408 delete err; 09409 exit(1); 09410 } 09411 ui->plantillaPreview->setScene(scene); 09412 09413 for (int i = ui->selectorPlantilla->topLevelItemCount() - 1; i >= 0; i--){ 09414 09415 if((ui->selectorPlantilla->topLevelItem(i))->isSelected()){ 09416 ui->pushButtonFondoPortada->setEnabled(true); 09417 QString filename=this->directoriodetrabajo.absolutePath() + "/templates/" + (ui->selectorPlantilla->topLevelItem(i))->text(0) + ".xml"; 09418 09419 a->portada->LoadRutaPlantilla(filename); 09420 this->elegidaPlantilla=true; 09421 Parser parser(filename.toStdString(), this); 09422 ticpp::Element* element = parser.root(); 09423 std::string filenameprev = parser.get_attribute("preview", element); 09424 std::string sionotrasera = parser.get_attribute("img_tras", element); 09425 std::string sionofrontal = parser.get_attribute("img_fron", element); 09426 std::string sionoTlateral = parser.get_attribute("texto_lat", element); 09427 std::string sionoTfrontal = parser.get_attribute("texto_fron", element); 09428 std::string sionoTtrasero = parser.get_attribute("texto_tras", element); 09429 std::string texto= parser.get_attribute("texto", element); 09430 QString *aux=new QString(filenameprev.c_str()); 09431 this->ui->selectFoto1->setEnabled(true); 09432 if(sionotrasera=="no"){ 09433 this->ui->selectFoto2->setDisabled(true); 09434 this->a->portada->DesactivarImagenTrasera(); 09435 }else{ 09436 this->a->portada->ActivarImagenTrasera(); 09437 this->ui->selectFoto2->setEnabled(true); 09438 } 09439 if(sionofrontal=="no"){ 09440 this->ui->selectFoto1->setDisabled(true); 09441 this->a->portada->DesactivarImagenFrontal(); 09442 }else{ 09443 this->ui->selectFoto1->setEnabled(true); 09444 this->a->portada->ActivarImagenFrontal(); 09445 } 09446 09447 if(texto=="si"){ 09448 this->a->portada->ActivarTexto(); 09449 ui->botonTexto->setEnabled(true); 09450 }else{ 09451 this->a->portada->DesactivarTexto(); 09452 ui->botonTexto->setDisabled(true); 09453 } 09454 if(sionoTfrontal=="no"){ 09455 09456 this->a->portada->DesactivarTextoFrontal(); 09457 }else{ 09458 this->a->portada->ActivarTextoFrontal(); 09459 } 09460 if(sionoTtrasero=="no"){ 09461 09462 this->a->portada->DesactivarTextoTrasero(); 09463 }else{ 09464 this->a->portada->ActivarTextoTrasero(); 09465 } 09466 if(sionoTlateral=="no"){ 09467 09468 this->a->portada->DesactivarTextoLateral(); 09469 }else{ 09470 this->a->portada->ActivarTextoLateral(); 09471 } 09472 QString filenameprev2=this->directoriodetrabajo.absolutePath() + "/templates/"; 09473 QImage *img = new QImage(); 09474 try{ 09475 img->load(filenameprev2 + *aux); 09476 if(img->isNull()){ 09477 throw std::ios_base::failure(tr("No pudo previsualizarse la plantilla.").toStdString()); 09478 } 09479 }catch(std::exception& e){ 09480 Error *err=new Error(4, e.what(), this); 09481 err->LanzarDialogo(); 09482 delete err; 09483 exit(1); 09484 } 09485 QPixmap image=QPixmap::fromImage(*img); 09486 ui->plantillaPreview->scene()->addPixmap(image.scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 09487 delete aux; 09488 delete img; 09489 } 09490 09491 } 09492 }else{ 09493 QGraphicsScene *scene, *scene2; 09494 try{ 09495 scene= new QGraphicsScene(); 09496 scene2= new QGraphicsScene(); 09497 }catch(std::exception& e){ 09498 Error *err=new Error(2, e.what(), this); 09499 err->LanzarDialogo(); 09500 delete err; 09501 exit(1); 09502 } 09503 this->portada->ui->visorPlantillas->setScene(scene); 09504 this->ui->plantillaPreview->setScene(scene2); 09505 for (int i = this->portada->ui->selectorPlantillas->topLevelItemCount() - 1; i >= 0; i--){ 09506 if((this->portada->ui->selectorPlantillas->topLevelItem(i))->isSelected()){ 09507 ui->pushButtonFondoPortada->setEnabled(true); 09508 QString filename=this->directoriodetrabajo.absolutePath() + "/templates/" + (this->portada->ui->selectorPlantillas->topLevelItem(i))->text(0) + ".xml"; 09509 this->a->portada->LoadRutaPlantilla(filename); 09510 this->elegidaPlantilla=true; 09511 Parser parser(filename.toStdString(), this); 09512 ticpp::Element* element = parser.root(); 09513 std::string filenameprev = parser.get_attribute("preview", element); 09514 std::string sionotrasera = parser.get_attribute("img_tras", element); 09515 std::string sionofrontal = parser.get_attribute("img_fron", element); 09516 std::string sionoTlateral = parser.get_attribute("texto_lat", element); 09517 std::string sionoTfrontal = parser.get_attribute("texto_fron", element); 09518 std::string sionoTtrasero = parser.get_attribute("texto_tras", element); 09519 std::string texto= parser.get_attribute("texto", element); 09520 this->ui->selectFoto1->setEnabled(true); 09521 if(sionotrasera=="no"){ 09522 this->fondoPortada->ui->pushTrasera->setDisabled(true); 09523 this->a->portada->DesactivarImagenTrasera(); 09524 }else{ 09525 this->a->portada->ActivarImagenTrasera(); 09526 } 09527 if(sionofrontal=="no"){ 09528 this->fondoPortada->ui->pushFrontal->setDisabled(true); 09529 this->a->portada->DesactivarImagenFrontal(); 09530 }else{ 09531 this->a->portada->ActivarImagenFrontal(); 09532 } 09533 if(texto=="si"){ 09534 this->a->portada->ActivarTexto(); 09535 this->portada->ui->pushTexto->setEnabled(true); 09536 this->portada->ui->groupBox_2->setEnabled(true); 09537 this->portada->ui->label->setEnabled(true); 09538 this->ui->botonTexto->setEnabled(true); 09539 this->portada->setEnabledNecesitaTexto(true); 09540 }else{ 09541 this->portada->ui->pushTexto->setDisabled(true); 09542 this->portada->ui->groupBox_2->setDisabled(true); 09543 this->portada->ui->label->setDisabled(true); 09544 this->ui->botonTexto->setDisabled(true); 09545 this->portada->setEnabledNecesitaTexto(false); 09546 } 09547 if(sionoTfrontal=="no"){ 09548 09549 this->a->portada->DesactivarTextoFrontal(); 09550 }else{ 09551 this->a->portada->ActivarTextoFrontal(); 09552 } 09553 if(sionoTtrasero=="no"){ 09554 this->a->portada->DesactivarTextoTrasero(); 09555 }else{ 09556 this->a->portada->ActivarTextoTrasero(); 09557 } 09558 if(sionoTlateral=="no"){ 09559 this->a->portada->DesactivarTextoLateral(); 09560 }else{ 09561 this->a->portada->ActivarTextoLateral(); 09562 } 09563 QString *aux=new QString(filenameprev.c_str()); 09564 QString filenameprev2=this->directoriodetrabajo.absolutePath() + "/templates/"; 09565 QImage *img = new QImage(); 09566 try{ 09567 img->load(filenameprev2 + *aux); 09568 if(img->isNull()){ 09569 throw std::ios_base::failure(tr("No pudo previsualizarse la plantilla.").toStdString()); 09570 } 09571 }catch(std::exception& e){ 09572 Error *err=new Error(4, e.what(), this); 09573 err->LanzarDialogo(); 09574 delete err; 09575 exit(1); 09576 } 09577 QPixmap image=QPixmap::fromImage(*img); 09578 QPixmap image2=QPixmap::fromImage(*img); 09579 this->portada->ui->visorPlantillas->scene()->addPixmap(image.scaled(127, 104, Qt::KeepAspectRatio, Qt::SmoothTransformation)); 09580 this->ui->plantillaPreview->scene()->addPixmap(image2.scaled(this->controlador->getWvisorPlantilla(), this->controlador->getHvisorPlantilla(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 09581 delete aux; 09582 delete img; 09583 } 09584 } 09585 } 09586 } 09587 09588 void FormPrincipal::ActivarSeleccionPlantilla(bool wizard){ 09589 09590 if(!wizard){ 09591 ui->activatedPlantilla->setDisabled(true); 09592 ui->selectorPlantilla->setEnabled(true); 09593 QString path= this->directoriodetrabajo.absolutePath() + "/templates"; 09594 QDir *dir; 09595 QStringList *por; 09596 try{ 09597 dir=new QDir(path); 09598 por=new QStringList("*.xml"); 09599 }catch(std::exception& e){ 09600 Error *err=new Error(2, e.what(), this); 09601 err->LanzarDialogo(); 09602 delete err; 09603 exit(1); 09604 } 09605 09606 try{ 09607 QStringList fileNames = dir->entryList(*por); 09608 for (int i = 0; i < fileNames.count(); i++) { 09609 QFileInfo fi(fileNames.at(i).toLocal8Bit()); 09610 QTreeWidgetItem *item = new QTreeWidgetItem(ui->selectorPlantilla); 09611 QString recorte=fi.fileName(); 09612 item->setText(0, recorte.remove(".xml")); 09613 QFont copiaFuente=item->font(0); 09614 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 09615 item->setFont(0,copiaFuente); 09616 item->setFont(1,copiaFuente); 09617 09618 QString aux=this->directoriodetrabajo.absolutePath() + "/templates/" + fi.fileName(); 09619 Parser par(aux.toStdString(), this); 09620 ticpp::Element* element=par.root(); 09621 std::string resultado=par.get_attribute("editable", element); 09622 if(resultado=="todo"){ 09623 item->setText(1, "Si"); 09624 }else{ 09625 if(resultado=="solotexto"){ 09626 item->setText(1, "Solo texto"); 09627 }else{ 09628 item->setText(1, "No"); 09629 } 09630 } 09631 } 09632 ui->selectorPlantilla->topLevelItem(0)->setSelected(true); 09633 }catch(std::exception& e){ 09634 Error *err=new Error(1, e.what(), this); 09635 err->LanzarDialogo(); 09636 delete err; 09637 exit(1); 09638 } 09639 delete dir; 09640 delete por; 09641 }else{ 09642 ui->selectorPlantilla->setDisabled(true); 09643 09644 QString path= this->directoriodetrabajo.absolutePath() + "/templates"; 09645 QDir *dir; 09646 QStringList *por; 09647 try{ 09648 dir=new QDir(path); 09649 por=new QStringList("*.xml"); 09650 }catch(std::exception& e){ 09651 Error *err=new Error(2, e.what(), this); 09652 err->LanzarDialogo(); 09653 delete err; 09654 exit(1); 09655 } 09656 09657 try{ 09658 QStringList fileNames = dir->entryList(*por); 09659 for (int i = 0; i < fileNames.count(); i++) { 09660 QFileInfo fi(fileNames.at(i).toLocal8Bit()); 09661 QTreeWidgetItem *item = new QTreeWidgetItem(this->portada->ui->selectorPlantillas); 09662 QString recorte=fi.fileName(); 09663 item->setText(0, recorte.remove(".xml")); 09664 QString aux=this->directoriodetrabajo.absolutePath() + "/templates/" + fi.fileName(); 09665 Parser par(aux.toStdString(), this); 09666 ticpp::Element* element=par.root(); 09667 std::string resultado=par.get_attribute("editable", element); 09668 if(resultado=="todo"){ 09669 item->setText(1, "Si"); 09670 }else{ 09671 if(resultado=="solotexto"){ 09672 item->setText(1, "Solo texto"); 09673 }else{ 09674 item->setText(1, "No"); 09675 } 09676 } 09677 } 09678 this->portada->ui->selectorPlantillas->topLevelItem(0)->setSelected(true); 09679 09680 }catch(std::exception& e){ 09681 Error *err=new Error(1, e.what(), this); 09682 err->LanzarDialogo(); 09683 delete err; 09684 exit(1); 09685 } 09686 delete dir; 09687 delete por; 09688 } 09689 } 09690 09691 void FormPrincipal::SeleccionarFotoFrontal(){ 09692 09693 QString path = QDir::homePath(); 09694 a->portada->LoadFotoFrontalRuta(QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), path, tr("Todas las imágenes (*.png *.bmp *.jpg *.jpeg *.jpe *.tiff *.tif);; Imágenes: JPEG (*.jpg *.jpeg *.jpe);; Imágenes: BMP (*.bmp);; Imágenes: PNG (*.png);; Imágenes: TIFF (*.tiff *.tif) "))); 09695 if(!a->portada->RutaFotoFrontal().isEmpty()){ 09696 this->ui->selectorPlantilla->setDisabled(true); 09697 this->ui->action_Nuevo->setEnabled(true); 09698 this->ui->actionNuevoBoton->setEnabled(true); 09699 } 09700 this->elegidaFrontalPortada=true; 09701 if(this->elegidaFrontalPortada && this->a->portada->hayImagenTrasera()){ 09702 if(this->elegidaTraseraPortada){ 09703 if(this->elegidoFondoPortada && this->a->portada->ContieneTexto()){ 09704 if(this->elegidoTexto){ 09705 this->ui->botonPrueba->setEnabled(true); 09706 09707 }else{ 09708 this->ui->botonPrueba->setDisabled(true); 09709 } 09710 09711 }else{ 09712 if(this->elegidoFondoPortada){ 09713 this->ui->botonPrueba->setEnabled(true); 09714 }else{ 09715 this->ui->botonPrueba->setDisabled(true); 09716 } 09717 } 09718 }else{ 09719 this->ui->botonPrueba->setDisabled(true); 09720 } 09721 }else{ 09722 if(this->elegidaFrontalPortada){ 09723 if(!this->a->portada->hayImagenTrasera()){ 09724 if(this->elegidoFondoPortada){ 09725 if(this->a->portada->ContieneTexto()){ 09726 if(this->elegidoTexto){ 09727 this->ui->botonPrueba->setEnabled(true); 09728 }else{ 09729 this->ui->botonPrueba->setDisabled(true); 09730 } 09731 09732 }else{ 09733 this->ui->botonPrueba->setEnabled(true); 09734 } 09735 }else{ 09736 this->ui->botonPrueba->setDisabled(true); 09737 } 09738 }else{ 09739 this->ui->botonPrueba->setDisabled(true); 09740 } 09741 }else{ 09742 this->ui->botonPrueba->setDisabled(true); 09743 } 09744 } 09745 09746 //Ahora la añadimos al selector 09747 QString tamanno; 09748 QFileInfo fi(a->portada->RutaFotoFrontal().toAscii()); 09749 QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget); 09750 09751 item->setText(0, "Imagen portada "); 09752 ui->treeWidget->resizeColumnToContents(0); 09753 item->setText(1, fi.fileName()); 09754 item->setText(2, fi.suffix()); 09755 QDateTime *fecha= new QDateTime(fi.created()); 09756 09757 if(fi.size()>1048575){ 09758 tamanno=QString::number(fi.size()/1048576)+ " MiB"; 09759 }else{ 09760 if(fi.size()>1024){ 09761 09762 tamanno=QString::number(fi.size()/1024)+" KiB"; 09763 }else{ 09764 tamanno=QString::number(fi.size())+ " Bytes"; 09765 } 09766 } 09767 item->setText(3, tamanno); 09768 item->setText(5, a->portada->RutaFotoFrontal()); 09769 item->setText(4, fecha->toString(Qt::TextDate)); 09770 QFont copiaFuente=this->ui->botonTexto->font(); 09771 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 09772 item->setFont(0, copiaFuente); 09773 item->setFont(1, copiaFuente); 09774 item->setFont(2, copiaFuente); 09775 item->setFont(3, copiaFuente); 09776 item->setFont(4, copiaFuente); 09777 item->setFont(5, copiaFuente); 09778 delete fecha; 09779 //Ahora creamos las miniaturas 09780 QGraphicsView *previa; 09781 QGraphicsScene *escena; 09782 QImage *img; 09783 try{ 09784 previa= new QGraphicsView(); 09785 previa->setFixedSize(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes()); 09786 escena = new QGraphicsScene(); 09787 previa->setScene(escena); 09788 img = new QImage(); 09789 }catch(std::exception& e){ 09790 Error *err=new Error(2, e.what(), this); 09791 err->LanzarDialogo(); 09792 delete err; 09793 exit(1); 09794 } 09795 try{ 09796 img->load(a->portada->RutaFotoFrontal()); 09797 if(img->isNull()){ 09798 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 09799 } 09800 }catch(std::exception& e){ 09801 Error *err=new Error(4, e.what(), this); 09802 err->LanzarDialogo(); 09803 delete err; 09804 exit(1); 09805 } 09806 09807 QPixmap image=QPixmap::fromImage(*img); 09808 if(image.width()>=image.height()){ 09809 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 09810 }else{ 09811 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); 09812 09813 } 09814 this->miniaturas.push_back(previa); 09815 ui->treeWidget->topLevelItem(0)->setSelected(true); 09816 ui->imagePreview->setStyleSheet(""); 09817 delete img; 09818 } 09819 09820 void FormPrincipal::SeleccionarFotoTrasera(){ 09821 09822 QString path = QDir::homePath(); 09823 a->portada->LoadFotoTraseraRuta(QFileDialog::getOpenFileName(this, tr("Abrir Imagen"), path, tr("Todas las imágenes (*.png *.bmp *.jpg *.jpeg *.jpe *.tiff *.tif);; Imágenes: JPEG (*.jpg *.jpeg *.jpe);; Imágenes: BMP (*.bmp);; Imágenes: PNG (*.png);; Imágenes: TIFF (*.tiff *.tif)"))); 09824 if(!a->portada->RutaFotoTrasera().isEmpty()){ 09825 this->ui->selectorPlantilla->setDisabled(true); 09826 this->ui->action_Nuevo->setEnabled(true); 09827 this->ui->actionNuevoBoton->setEnabled(true); 09828 } 09829 this->elegidaTraseraPortada=true; 09830 if(this->elegidaFrontalPortada && this->a->portada->hayImagenTrasera()){ 09831 if(this->elegidaTraseraPortada){ 09832 if(this->elegidoFondoPortada && this->a->portada->ContieneTexto()){ 09833 if(this->elegidoTexto){ 09834 this->ui->botonPrueba->setEnabled(true); 09835 09836 }else{ 09837 this->ui->botonPrueba->setDisabled(true); 09838 } 09839 09840 }else{ 09841 if(this->elegidoFondoPortada){ 09842 this->ui->botonPrueba->setEnabled(true); 09843 }else{ 09844 this->ui->botonPrueba->setDisabled(true); 09845 } 09846 } 09847 }else{ 09848 this->ui->botonPrueba->setDisabled(true); 09849 } 09850 }else{ 09851 if(this->elegidaFrontalPortada){ 09852 if(!this->a->portada->hayImagenTrasera()){ 09853 if(this->elegidoFondoPortada){ 09854 if(this->a->portada->ContieneTexto()){ 09855 if(this->elegidoTexto){ 09856 this->ui->botonPrueba->setEnabled(true); 09857 }else{ 09858 this->ui->botonPrueba->setDisabled(true); 09859 } 09860 09861 }else{ 09862 this->ui->botonPrueba->setEnabled(true); 09863 } 09864 }else{ 09865 this->ui->botonPrueba->setDisabled(true); 09866 } 09867 }else{ 09868 this->ui->botonPrueba->setDisabled(true); 09869 } 09870 }else{ 09871 if(!this->a->portada->hayImagenFrontal()){ 09872 this->elegidaFrontalPortada=true; 09873 if(this->elegidaFrontalPortada && this->elegidaTraseraPortada && this->elegidoFondoPortada && this->elegidoTexto && this->elegidaPlantilla){ 09874 this->ui->botonPrueba->setEnabled(true); 09875 } 09876 }else{ 09877 this->ui->botonPrueba->setDisabled(true); 09878 } 09879 } 09880 } 09881 //Ahora la añadimos al selector 09882 QString tamanno; 09883 QFileInfo fi(a->portada->RutaFotoTrasera().toAscii()); 09884 QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget); 09885 09886 item->setText(1, fi.fileName()); 09887 item->setText(2, fi.suffix()); 09888 QDateTime *fecha= new QDateTime(fi.created()); 09889 09890 if(fi.size()>1048575){ 09891 tamanno=QString::number(fi.size()/1048576)+ " MiB"; 09892 }else{ 09893 if(fi.size()>1024){ 09894 09895 tamanno=QString::number(fi.size()/1024)+" KiB"; 09896 }else{ 09897 tamanno=QString::number(fi.size())+ " Bytes"; 09898 } 09899 } 09900 item->setText(3, tamanno); 09901 item->setText(5, a->portada->RutaFotoTrasera()); 09902 item->setText(4, fecha->toString(Qt::TextDate)); 09903 QFont copiaFuente=this->ui->botonTexto->font(); 09904 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 09905 item->setFont(0, copiaFuente); 09906 item->setFont(1, copiaFuente); 09907 item->setFont(2, copiaFuente); 09908 item->setFont(3, copiaFuente); 09909 item->setFont(4, copiaFuente); 09910 item->setFont(5, copiaFuente); 09911 item->setText(0, "Imagen contraportada "); 09912 delete fecha; 09913 //Ahora creamos las miniaturas 09914 QGraphicsView *previa; 09915 QGraphicsScene *escena; 09916 QImage *img; 09917 try{ 09918 previa= new QGraphicsView(); 09919 previa->setFixedSize(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes()); 09920 escena = new QGraphicsScene(); 09921 previa->setScene(escena); 09922 img = new QImage(); 09923 }catch(std::exception& e){ 09924 Error *err=new Error(2, e.what(), this); 09925 err->LanzarDialogo(); 09926 delete err; 09927 exit(1); 09928 } 09929 try{ 09930 img->load(a->portada->RutaFotoTrasera()); 09931 if(img->isNull()){ 09932 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 09933 } 09934 }catch(std::exception& e){ 09935 Error *err=new Error(4, e.what(), this); 09936 err->LanzarDialogo(); 09937 delete err; 09938 exit(1); 09939 } 09940 09941 QPixmap image=QPixmap::fromImage(*img); 09942 if(image.width()>=image.height()){ 09943 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 09944 }else{ 09945 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); 09946 09947 } 09948 this->miniaturas.push_back(previa); 09949 ui->treeWidget->topLevelItem(0)->setSelected(true); 09950 ui->imagePreview->setStyleSheet(""); 09951 delete img; 09952 } 09953 09954 bool FormPrincipal::getCreadasPaginas(){ 09955 return this->creadasPaginas; 09956 } 09957 09958 void FormPrincipal::LanzarDialogPropiedades(){ 09959 dialogPropiedades *dialog=new dialogPropiedades(this, this, this->controlador); 09960 dialog->exec(); 09961 delete dialog; 09962 09963 } 09964 09965 void FormPrincipal::addFiles(bool wizard) 09966 { 09967 if(!wizard){ 09968 QProgressBar *barra= new QProgressBar(this); 09969 int wAux=this->ui->statusBar->width(); 09970 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 09971 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 09972 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 09973 09974 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 09975 09976 09977 QString path = QDir::homePath(); 09978 09979 09980 QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Abrir Imágenes"), path, tr("Todas las imágenes (*.png *.bmp *.jpg *.jpeg *.jpe *.tiff *.tif);; Imágenes: JPEG (*.jpg *.jpeg *.jpe);; Imágenes: BMP (*.bmp);; Imágenes: PNG (*.png);; Imágenes: TIFF (*.tiff *.tif)")); 09981 this->ui->statusBar->setMaximumWidth(986-270); 09982 if(!fileNames.isEmpty()){ 09983 barra->setRange(0, fileNames.count()+1); 09984 barra->setValue(0); 09985 09986 for (int i = 0; i < fileNames.count(); i++) { 09987 barra->setValue(i+1); 09988 QString tamanno; 09989 QFileInfo fi(fileNames.at(i).toAscii()); 09990 QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget); 09991 item->setCheckState(0, Qt::Unchecked); 09992 item->setText(1, fi.fileName()); 09993 item->setText(2, fi.suffix()); 09994 09995 QDateTime *fecha= new QDateTime(fi.created()); 09996 09997 if(fi.size()>1048575){ 09998 tamanno=QString::number(fi.size()/1048576)+ " MiB"; 09999 }else{ 10000 if(fi.size()>1024){ 10001 10002 tamanno=QString::number(fi.size()/1024)+" KiB"; 10003 }else{ 10004 tamanno=QString::number(fi.size())+ " Bytes"; 10005 } 10006 } 10007 item->setText(3, tamanno); 10008 item->setText(5, fileNames.at(i)); 10009 item->setText(4, fecha->toString(Qt::TextDate)); 10010 QFont copiaFuente=this->ui->botonTexto->font(); 10011 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 10012 item->setFont(0, copiaFuente); 10013 item->setFont(1, copiaFuente); 10014 item->setFont(2, copiaFuente); 10015 item->setFont(3, copiaFuente); 10016 item->setFont(4, copiaFuente); 10017 item->setFont(5, copiaFuente); 10018 delete fecha; 10019 //Ahora creamos las miniaturas 10020 QGraphicsView *previa; 10021 QGraphicsScene *escena; 10022 QImage *img; 10023 try{ 10024 previa= new QGraphicsView(); 10025 previa->setFixedSize(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes()); 10026 escena = new QGraphicsScene(); 10027 previa->setScene(escena); 10028 img = new QImage(); 10029 }catch(std::exception& e){ 10030 Error *err=new Error(2, e.what(), this); 10031 err->LanzarDialogo(); 10032 delete err; 10033 exit(1); 10034 } 10035 try{ 10036 img->load(fileNames.at(i)); 10037 if(img->isNull()){ 10038 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 10039 } 10040 }catch(std::exception& e){ 10041 Error *err=new Error(4, e.what(), this); 10042 err->LanzarDialogo(); 10043 delete err; 10044 exit(1); 10045 } 10046 10047 QPixmap image=QPixmap::fromImage(*img); 10048 if(image.width()>=image.height()){ 10049 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 10050 }else{ 10051 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); 10052 10053 } 10054 this->miniaturas.push_back(previa); 10055 delete img; 10056 } 10057 ui->treeWidget->setHeaderLabel(" "); 10058 ui->treeWidget->topLevelItem(0)->setSelected(true); 10059 ui->treeWidget->resizeColumnToContents(0); 10060 barra->setValue(fileNames.count()+1); 10061 barra->close(); 10062 } 10063 this->ui->statusBar->setMaximumWidth(wAux); 10064 delete barra; 10065 }else{ 10066 10067 QProgressBar *barra= new QProgressBar(this); 10068 int wAux=this->ui->statusBar->width(); 10069 barra->setFixedWidth((294*this->controlador->getWPrincipal())/1014); 10070 barra->setFixedHeight((23*this->controlador->getHPrincipal())/705); 10071 this->ui->statusBar->setMaximumWidth(((986-270)*this->controlador->getWPrincipal())/1014); 10072 10073 barra->move((this->controlador->getWPrincipal()*720)/1014, (this->controlador->getHPrincipal()*683)/705); 10074 10075 10076 10077 QString path = QDir::homePath(); 10078 10079 10080 QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Abrir Imágenes"), path, tr("Todas las imágenes (*.png *.bmp *.jpg *.jpeg *.jpe *.tiff *.tif);; Imágenes: JPEG (*.jpg *.jpeg *.jpe);; Imágenes: BMP (*.bmp);; Imágenes: PNG (*.png);; Imágenes: TIFF (*.tiff *.tif)")); 10081 this->ui->statusBar->setMaximumWidth(986-270); 10082 if(!fileNames.isEmpty()){ 10083 barra->setRange(0, fileNames.count()+1); 10084 barra->setValue(0); 10085 10086 for (int i = 0; i < fileNames.count(); i++) { 10087 barra->setValue(i+1); 10088 QString tamanno; 10089 QFileInfo fi(fileNames.at(i).toAscii()); 10090 QTreeWidgetItem *item = new QTreeWidgetItem(this->fotos->ui->treeWidget); 10091 QTreeWidgetItem *item2 = new QTreeWidgetItem(this->ui->treeWidget); 10092 10093 item->setCheckState(0, Qt::Unchecked); 10094 item->setText(1, fi.fileName()); 10095 item->setText(2, fi.suffix()); 10096 item2->setCheckState(0, Qt::Unchecked); 10097 item2->setText(1, fi.fileName()); 10098 item2->setText(2, fi.suffix()); 10099 QDateTime *fecha= new QDateTime(fi.created()); 10100 10101 if(fi.size()>1048575){ 10102 tamanno=QString::number(fi.size()/1048576)+ " MiB"; 10103 }else{ 10104 if(fi.size()>1024){ 10105 10106 tamanno=QString::number(fi.size()/1024)+" KiB"; 10107 }else{ 10108 tamanno=QString::number(fi.size())+ " Bytes"; 10109 } 10110 } 10111 item->setText(3, tamanno); 10112 item->setText(5, fileNames.at(i)); 10113 item->setText(4, fecha->toString(Qt::TextDate)); 10114 item2->setText(3, tamanno); 10115 item2->setText(5, fileNames.at(i)); 10116 item2->setText(4, fecha->toString(Qt::TextDate)); 10117 QFont copiaFuente=this->ui->botonTexto->font(); 10118 copiaFuente.setPointSize(this->controlador->getPuntosTexto()); 10119 item->setFont(0, copiaFuente); 10120 item->setFont(1, copiaFuente); 10121 item->setFont(2, copiaFuente); 10122 item->setFont(3, copiaFuente); 10123 item->setFont(4, copiaFuente); 10124 item->setFont(5, copiaFuente); 10125 delete fecha; 10126 //Ahora creamos las miniaturas 10127 QGraphicsView *previa; 10128 QGraphicsScene *escena; 10129 QImage *img; 10130 try{ 10131 previa= new QGraphicsView(); 10132 previa->setFixedSize(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes()); 10133 escena = new QGraphicsScene(); 10134 previa->setScene(escena); 10135 img = new QImage(); 10136 }catch(std::exception& e){ 10137 Error *err=new Error(2, e.what(), this); 10138 err->LanzarDialogo(); 10139 delete err; 10140 exit(1); 10141 } 10142 try{ 10143 img->load(fileNames.at(i)); 10144 if(img->isNull()){ 10145 throw std::ios_base::failure(tr("No pudo previsualizarse la imagen.").toStdString()); 10146 } 10147 }catch(std::exception& e){ 10148 Error *err=new Error(4, e.what(), this); 10149 err->LanzarDialogo(); 10150 delete err; 10151 exit(1); 10152 } 10153 10154 QPixmap image=QPixmap::fromImage(*img); 10155 if(image.width()>= image.height()){ 10156 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); 10157 }else{ 10158 previa->scene()->addPixmap(image.scaled(this->controlador->getWvisorImagenes(), this->controlador->getHvisorImagenes(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); 10159 10160 } 10161 this->miniaturas.push_back(previa); 10162 delete img; 10163 } 10164 10165 this->fotos->ui->treeWidget->topLevelItem(0)->setSelected(true); 10166 this->ui->treeWidget->topLevelItem(0)->setSelected(true); 10167 10168 barra->setValue(fileNames.count()+1); 10169 barra->close(); 10170 } 10171 this->ui->statusBar->setMaximumWidth(wAux); 10172 10173 this->fotos->ui->imagePreview->setStyle(new QWindowsStyle); 10174 this->fotos->ui->imagePreview->setStyleSheet(""); 10175 delete barra; 10176 } 10177 this->ui->imagePreview->setStyleSheet(""); 10178 } 10179 10180 10181 void FormPrincipal::checkAllItems(bool wizard) 10182 { 10183 if(!wizard){ 10184 QTreeWidgetItemIterator it(ui->treeWidget); 10185 while (*it) { 10186 (*it)->setCheckState (0, Qt::Checked); 10187 ++it; 10188 } 10189 this->ui->pushUncheckAll->show(); 10190 }else{ 10191 QTreeWidgetItemIterator it(this->fotos->ui->treeWidget); 10192 while (*it) { 10193 (*it)->setCheckState (0, Qt::Checked); 10194 ++it; 10195 } 10196 } 10197 } 10198 10199 10200 10201 void FormPrincipal::uncheckItems(bool wizard) 10202 { 10203 if(!wizard){ 10204 QTreeWidgetItemIterator it(ui->treeWidget); 10205 while(*it){ 10206 (*it)->setCheckState (0, Qt::Unchecked); 10207 ++it; 10208 } 10209 this->ui->pushUncheckAll->hide(); 10210 }else{ 10211 QTreeWidgetItemIterator it(this->fotos->ui->treeWidget); 10212 while(*it){ 10213 (*it)->setCheckState (0, Qt::Unchecked); 10214 ++it; 10215 } 10216 } 10217 } 10218 10219 10220 void FormPrincipal::removeItems(bool wizard) 10221 { 10222 if(!wizard){ 10223 static unsigned a; 10224 for (int i = ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 10225 if((ui->treeWidget->topLevelItem(i))->checkState(0)==Qt::Checked){ 10226 a=i; 10227 iAList.removeAt(i); 10228 std::vector<QGraphicsView*> aux; 10229 for(unsigned j=0; j<this->miniaturas.size(); j++){ 10230 int jj=j; 10231 if(jj!=i){ 10232 aux.push_back(this->miniaturas.at(j)); 10233 } 10234 } 10235 while(!this->miniaturas.empty()){ 10236 this->miniaturas.pop_back(); 10237 } 10238 for(unsigned y=0; y<aux.size(); y++){ 10239 this->miniaturas.push_back(aux.at(y)); 10240 } 10241 ui->treeWidget->takeTopLevelItem(i); 10242 } 10243 10244 } 10245 if(this->miniaturas.size()!=0){ 10246 if(a==this->miniaturas.size()){ 10247 QGraphicsView *copia; 10248 try{ 10249 copia=new QGraphicsView(this->miniaturas[a-1]); 10250 copia=this->miniaturas[a-1]; 10251 }catch(std::exception& e){ 10252 Error *err=new Error(1, e.what(), this); 10253 err->LanzarDialogo(); 10254 delete err; 10255 exit(1); 10256 } 10257 ui->imagePreview->setScene(copia->scene()); 10258 }else{ 10259 QGraphicsView *copia; 10260 try{ 10261 copia=new QGraphicsView(this->miniaturas[a]); 10262 copia=this->miniaturas[a]; 10263 }catch(std::exception& e){ 10264 Error *err=new Error(1, e.what(), this); 10265 err->LanzarDialogo(); 10266 delete err; 10267 exit(1); 10268 } 10269 ui->imagePreview->setScene(copia->scene()); 10270 } 10271 }else{ 10272 ui->imagePreview->scene()->clear(); 10273 10274 } 10275 this->ui->pushUncheckAll->hide(); 10276 }else{ 10277 static unsigned a; 10278 for (int i = this->fotos->ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 10279 if((this->fotos->ui->treeWidget->topLevelItem(i))->checkState(0)==Qt::Checked){ 10280 a=i; 10281 iAList.removeAt(i); 10282 std::vector<QGraphicsView*> aux; 10283 for(unsigned j=0; j<this->miniaturas.size(); j++){ 10284 int jj=j; 10285 if(jj!=i){ 10286 aux.push_back(this->miniaturas.at(j)); 10287 } 10288 } 10289 while(!this->miniaturas.empty()){ 10290 this->miniaturas.pop_back(); 10291 } 10292 for(unsigned y=0; y<aux.size(); y++){ 10293 this->miniaturas.push_back(aux.at(y)); 10294 } 10295 this->fotos->ui->treeWidget->takeTopLevelItem(i); 10296 } 10297 10298 } 10299 if(this->miniaturas.size()!=0){ 10300 if(a==this->miniaturas.size()){ 10301 QGraphicsView *copia; 10302 try{ 10303 copia=new QGraphicsView(this->miniaturas[a-1]); 10304 copia=this->miniaturas[a-1]; 10305 }catch(std::exception& e){ 10306 Error *err=new Error(1, e.what(), this); 10307 err->LanzarDialogo(); 10308 delete err; 10309 exit(1); 10310 } 10311 this->fotos->ui->imagePreview->setScene(copia->scene()); 10312 }else{ 10313 QGraphicsView *copia; 10314 try{ 10315 copia=new QGraphicsView(this->miniaturas[a]); 10316 copia=this->miniaturas[a]; 10317 }catch(std::exception& e){ 10318 Error *err=new Error(1, e.what(), this); 10319 err->LanzarDialogo(); 10320 delete err; 10321 exit(1); 10322 } 10323 this->fotos->ui->imagePreview->setScene(copia->scene()); 10324 } 10325 }else{ 10326 this->fotos->ui->imagePreview->scene()->clear(); 10327 10328 } 10329 } 10330 } 10331 10332 10333 void FormPrincipal::loadImagePreview(bool wizard) 10334 { 10335 if(!wizard){ 10336 10337 for (int i = ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 10338 if((ui->treeWidget->topLevelItem(i))->isSelected()){ 10339 QGraphicsView *copia; 10340 try{ 10341 copia=new QGraphicsView(this->miniaturas[i]); 10342 copia=this->miniaturas[i]; 10343 }catch(std::exception& e){ 10344 Error *err=new Error(1, e.what(), this); 10345 err->LanzarDialogo(); 10346 delete err; 10347 exit(1); 10348 } 10349 ui->imagePreview->setScene(copia->scene()); 10350 10351 } 10352 } 10353 this->ActivadoVisorImagenes=true; 10354 }else{ 10355 for (int i = this->fotos->ui->treeWidget->topLevelItemCount() - 1; i >= 0; i--){ 10356 if((this->fotos->ui->treeWidget->topLevelItem(i))->isSelected()){ 10357 QGraphicsView *copia, *copia2; 10358 try{ 10359 copia=new QGraphicsView(this->miniaturas[i]); 10360 copia=this->miniaturas[i]; 10361 copia2=new QGraphicsView(this->miniaturas[i]); 10362 copia2=this->miniaturas[i]; 10363 }catch(std::exception& e){ 10364 Error *err=new Error(1, e.what(), this); 10365 err->LanzarDialogo(); 10366 delete err; 10367 exit(1); 10368 } 10369 this->fotos->ui->imagePreview->setScene(copia->scene()); 10370 this->ui->imagePreview->setScene(copia2->scene()); 10371 10372 } 10373 } 10374 this->ActivadoVisorImagenes=true; 10375 } 10376 } 10377 10378 10379 void FormPrincipal::CloseApp() 10380 { 10381 close(); 10382 } 10383 10384