OpenAlbum 1.0.b

/home/manuel/PFC/open-album/OpenAlbum-Unix/dialogtexturas.cpp

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 }
 Todo Clases Archivos Funciones Variables