![]() |
OpenAlbum 1.0.b
|
00001 #include <QtGui> 00002 #include "dialogtexturas.h" 00003 #include "ui_dialogtexturas.h" 00004 #include "error.h" 00005 #include <QDir> 00006 #include "controladorresolucion.h" 00007 00008 dialogTexturas::dialogTexturas(QWidget *parent, controladorResolucion *controlador_, QDir directoriodetrabajo) : 00009 QDialog(parent), 00010 ui(new Ui::dialogTexturas) 00011 { 00012 ui->setupUi(this); 00013 this->controlador=controlador_; 00014 this->setDimensiones(); 00015 this->directorioPpal=directoriodetrabajo; 00016 this->tareaCompletada=false; 00017 this->ActivarSeleccionTexturas(); 00018 this->ui->groupBox->setStyle(new QWindowsStyle); 00019 this->ui->selectorTexturas->setStyle(new QWindowsStyle); 00020 this->ui->visorTexturas->setStyle(new QWindowsStyle); 00021 QIcon *iconoVentana=new QIcon(directoriodetrabajo.absolutePath() + "/data/iconlargue.png"); 00022 this->setWindowIcon(*iconoVentana); 00023 delete iconoVentana; 00024 } 00025 00026 dialogTexturas::~dialogTexturas() 00027 { 00028 delete ui; 00029 } 00030 00031 void dialogTexturas::setDimensiones(){ 00032 this->setFixedSize(this->controlador->getWtexturas(), this->controlador->getHtexturas()); 00033 int W=this->controlador->getWtexturas(); 00034 int H=this->controlador->getHtexturas(); 00035 int x,y; 00036 x=this->ui->groupBox->x(); 00037 y=this->ui->groupBox->y(); 00038 this->ui->groupBox->setGeometry((x*W)/401, (y*H)/184, (381*W)/401, (131*H)/184); 00039 x=this->ui->pushCancelar->x(); 00040 y=this->ui->pushCancelar->y(); 00041 this->ui->pushCancelar->setGeometry((x*W)/401, (y*H)/184, (98*W)/401, (27*H)/184); 00042 x=this->ui->pushElegir->x(); 00043 y=this->ui->pushElegir->y(); 00044 this->ui->pushElegir->setGeometry((x*W)/401, (y*H)/184, (98*W)/401, (27*H)/184); 00045 x=this->ui->selectorTexturas->x(); 00046 y=this->ui->selectorTexturas->y(); 00047 this->ui->selectorTexturas->setGeometry((x*W)/401, (y*H)/184, (211*W)/401, (111*H)/184); 00048 x=this->ui->visorTexturas->x(); 00049 y=this->ui->visorTexturas->y(); 00050 this->ui->visorTexturas->setGeometry((x*W)/401, (y*H)/184, (141*W)/401, (111*H)/184); 00051 00052 } 00053 00054 void dialogTexturas::setMiniaturasTextura(std::vector<QGraphicsView*> min){ 00055 this->miniaturasTexturas=min; 00056 } 00057 00058 void dialogTexturas::seleccionarPrimerItem(){ 00059 ui->selectorTexturas->topLevelItem(0)->setSelected(true); 00060 } 00061 00062 void dialogTexturas::ActivarSeleccionTexturas(){ 00063 ui->visorTexturas->setDisabled(true); 00064 00065 QDir *dir; 00066 QStringList *por; 00067 try{ 00068 00069 QString path=this->directorioPpal.absolutePath() + "/textures/"; 00070 dir=new QDir(path); 00071 por=new QStringList("*.jpg"); 00072 }catch(std::exception& e){ 00073 Error *err=new Error(2, e.what(), this); 00074 err->LanzarDialogo(); 00075 delete err; 00076 exit(1); 00077 } 00078 ui->selectorTexturas->setEnabled(true); 00079 ui->visorTexturas->setEnabled(true); 00080 ui->selectorTexturas->clear(); 00081 ui->pushElegir->setDisabled(true); 00082 QTextCodec *linuxCodec1=QTextCodec::codecForCStrings(); 00083 QTextCodec *linuxCodec=QTextCodec::codecForName("UTF-8"); 00084 QTextCodec::setCodecForTr(linuxCodec); 00085 QTextCodec::setCodecForCStrings(linuxCodec); 00086 QTextCodec::setCodecForLocale(linuxCodec); 00087 QStringList fileNames = dir->entryList(*por); 00088 00089 try{ 00090 if(fileNames.isEmpty()){ 00091 throw std::ios_base::failure(tr("No se pueden cargar las texturas.").toStdString()); 00092 } 00093 }catch(std::exception& e){ 00094 Error *err=new Error(4, e.what(), this); 00095 err->LanzarDialogo(); 00096 delete err; 00097 exit(1); 00098 } 00099 00100 for (int i=0; i < fileNames.size(); i++) { 00101 00102 00103 QFileInfo fi(fileNames.at(i).toLocal8Bit()); 00104 QTreeWidgetItem *item = new QTreeWidgetItem(ui->selectorTexturas); 00105 item->setText(0, fi.fileName().remove(".jpg")); 00106 00107 } 00108 QTextCodec::setCodecForTr(linuxCodec1); 00109 QTextCodec::setCodecForCStrings(linuxCodec1); 00110 QTextCodec::setCodecForLocale(linuxCodec1); 00111 delete dir; 00112 delete por; 00113 00114 00115 } 00116 00117 bool dialogTexturas::getTareaCompletada(){ 00118 return this->tareaCompletada; 00119 } 00120 00121 QString dialogTexturas::getTexturaElegida(){ 00122 return this->texturaElegida; 00123 } 00124 00125 void dialogTexturas::elegirTextura(){ 00126 00127 this->tareaCompletada=true; 00128 for (int i = ui->selectorTexturas->topLevelItemCount() - 1; i >= 0; i--){ 00129 00130 if((ui->selectorTexturas->topLevelItem(i))->isSelected()){ 00131 00132 this->texturaElegida=this->directorioPpal.absolutePath() + "/textures/" + (ui->selectorTexturas->topLevelItem(i))->text(0) + ".jpg"; 00133 } 00134 } 00135 00136 ui->selectorTexturas->clear(); 00137 close(); 00138 } 00139 00140 void dialogTexturas::cancelarEleccion(){ 00141 close(); 00142 this->tareaCompletada=false; 00143 } 00144 00145 void dialogTexturas::ActivarVisualizacionTexturas(){ 00146 ui->visorTexturas->setEnabled(true); 00147 QGraphicsScene *scene; 00148 try{ 00149 00150 scene= new QGraphicsScene(); 00151 }catch(std::exception& e){ 00152 Error *err=new Error(2, e.what(), this); 00153 err->LanzarDialogo(); 00154 delete err; 00155 exit(1); 00156 } 00157 ui->visorTexturas->setScene(scene); 00158 00159 for (int i = ui->selectorTexturas->topLevelItemCount() - 1; i >= 0; i--){ 00160 00161 if((ui->selectorTexturas->topLevelItem(i))->isSelected()){ 00162 ui->pushElegir->setEnabled(true); 00163 ui->visorTexturas->setScene(this->miniaturasTexturas.at(i)->scene()); 00164 } 00165 00166 } 00167 00168 }