![]() |
OpenAlbum 1.0.b
|
00001 #include "dialogordenpersonalizado.h" 00002 #include "ui_dialogordenpersonalizado.h" 00003 #include <stack> 00004 #include "error.h" 00005 #include <QtGui> 00006 00007 DialogOrdenPersonalizado::DialogOrdenPersonalizado(std::vector<ImagenInfo> images, QWidget *parent, controladorResolucion *controlador_, QDir directoriodetrabajo) : 00008 QDialog(parent), 00009 ui(new Ui::DialogOrdenPersonalizado) 00010 { 00011 ui->setupUi(this); 00012 this->controlador=controlador_; 00013 this->setDimensiones(); 00014 00015 this->ui->ListaImagenes->setStyle(new QWindowsStyle); 00016 utilidad_finalizada=false; 00017 this->ui->groupBox->setStyle(new QWindowsStyle); 00018 for(unsigned i=0; i<images.size(); i++){ 00019 QTreeWidgetItem *item; 00020 try{ 00021 item = new QTreeWidgetItem(ui->ListaImagenes); 00022 }catch(std::exception& e){ 00023 Error *err=new Error(2, e.what(), this); 00024 err->LanzarDialogo(); 00025 delete err; 00026 exit(1); 00027 } 00028 try{ 00029 item->setText(0, images[i].nombre); 00030 imagenes_copia.push_back(images[i]); 00031 }catch(std::exception& e){ 00032 Error *err=new Error(1, e.what(), this); 00033 err->LanzarDialogo(); 00034 delete err; 00035 exit(1); 00036 } 00037 } 00038 std::stack<QString> pila; 00039 00040 for(int j=0; j<ui->ListaImagenes->topLevelItemCount(); j++){ 00041 pila.push(ui->ListaImagenes->topLevelItem(j)->text(0)); 00042 } 00043 ui->ListaImagenes->clear(); 00044 00045 while(!pila.empty()){ 00046 try{ 00047 QTreeWidgetItem *item = new QTreeWidgetItem(ui->ListaImagenes); 00048 item->setText(0, pila.top()); 00049 pila.pop(); 00050 }catch(std::exception& e){ 00051 Error *err=new Error(2, e.what(), this); 00052 err->LanzarDialogo(); 00053 delete err; 00054 exit(1); 00055 } 00056 } 00057 QIcon *iconoVentana=new QIcon(directoriodetrabajo.absolutePath() + "/data/iconlargue.png"); 00058 this->setWindowIcon(*iconoVentana); 00059 delete iconoVentana; 00060 00061 QIcon *icono1=new QIcon(directoriodetrabajo.absolutePath() + "/data/icon_flecha_up.png"); 00062 this->ui->upButton->setIcon(*icono1); 00063 delete icono1; 00064 00065 QIcon *icono2=new QIcon(directoriodetrabajo.absolutePath() + "/data/icon_flecha_down.png"); 00066 this->ui->DownButton->setIcon(*icono2); 00067 delete icono2; 00068 } 00069 00070 DialogOrdenPersonalizado::~DialogOrdenPersonalizado() 00071 { 00072 delete ui; 00073 } 00074 00075 void DialogOrdenPersonalizado::setDimensiones(){ 00076 this->setFixedSize(this->controlador->getWordenpersonalizado(), this->controlador->getHordenpersonalizado()); 00077 int W=this->controlador->getWordenpersonalizado(); 00078 int H=this->controlador->getHordenpersonalizado(); 00079 00080 00081 int x,y; 00082 x=this->ui->DownButton->x(); 00083 y=this->ui->DownButton->y(); 00084 this->ui->DownButton->setGeometry((x*W)/387, (y*H)/308, (41*W)/387, (51*H)/308); 00085 x=this->ui->upButton->x(); 00086 y=this->ui->upButton->y(); 00087 this->ui->upButton->setGeometry((x*W)/387, (y*H)/308, (41*W)/387, (51*H)/308); 00088 x=this->ui->ListaImagenes->x(); 00089 y=this->ui->ListaImagenes->y(); 00090 this->ui->ListaImagenes->setGeometry((x*W)/387, (y*H)/308, (251*W)/387, (161*H)/308); 00091 x=this->ui->groupBox->x(); 00092 y=this->ui->groupBox->y(); 00093 this->ui->groupBox->setGeometry((x*W)/387, (y*H)/308, (361*W)/387, (251*H)/308); 00094 x=this->ui->label->x(); 00095 y=this->ui->label->y(); 00096 this->ui->label->setGeometry((x*W)/387, (y*H)/308, (341*W)/387, (41*H)/308); 00097 x=this->ui->pushCancelar->x(); 00098 y=this->ui->pushCancelar->y(); 00099 this->ui->pushCancelar->setGeometry((x*W)/387, (y*H)/308, (98*W)/387, (27*H)/308); 00100 x=this->ui->pushTerminar->x(); 00101 y=this->ui->pushTerminar->y(); 00102 this->ui->pushTerminar->setGeometry((x*W)/387, (y*H)/308, (98*W)/387, (27*H)/308); 00103 00104 00105 } 00106 00107 std::vector<ImagenInfo> DialogOrdenPersonalizado::GetVectorImagenes(){ 00108 00109 return imagenes_final; 00110 00111 } 00112 00113 void DialogOrdenPersonalizado::CambiarPosArriba(){ 00114 try{ 00115 for(int i=0; i<ui->ListaImagenes->topLevelItemCount(); i++){ 00116 00117 if(ui->ListaImagenes->topLevelItem(i)->isSelected() && i!=0){ 00118 QString auxiliar= ui->ListaImagenes->topLevelItem(i)->text(0); 00119 ui->ListaImagenes->topLevelItem(i)->setText(0, ui->ListaImagenes->topLevelItem(i-1)->text(0)); 00120 ui->ListaImagenes->topLevelItem(i-1)->setText(0, auxiliar); 00121 ui->ListaImagenes->topLevelItem(i-1)->setSelected(true); 00122 ui->ListaImagenes->topLevelItem(i)->setSelected(false); 00123 } 00124 } 00125 }catch(std::exception& e){ 00126 Error *err=new Error(1, e.what(), this); 00127 err->LanzarDialogo(); 00128 delete err; 00129 exit(1); 00130 } 00131 } 00132 00133 void DialogOrdenPersonalizado::CambiarPosAbajo(){ 00134 static int a; 00135 try{ 00136 for(int i=0; i<ui->ListaImagenes->topLevelItemCount(); i++){ 00137 if(ui->ListaImagenes->topLevelItem(i)->isSelected() && i!=(ui->ListaImagenes->topLevelItemCount()-1)){ 00138 QString auxiliar= ui->ListaImagenes->topLevelItem(i)->text(0); 00139 ui->ListaImagenes->topLevelItem(i)->setText(0, ui->ListaImagenes->topLevelItem(i+1)->text(0)); 00140 ui->ListaImagenes->topLevelItem(i+1)->setText(0, auxiliar); 00141 a=i; 00142 } 00143 } 00144 if(a<(ui->ListaImagenes->topLevelItemCount()-1)){ 00145 ui->ListaImagenes->topLevelItem(a)->setSelected(false); 00146 ui->ListaImagenes->topLevelItem(a+1)->setSelected(true); 00147 } 00148 }catch(std::exception& e){ 00149 Error *err=new Error(1, e.what(), this); 00150 err->LanzarDialogo(); 00151 delete err; 00152 exit(1); 00153 } 00154 } 00155 00156 void DialogOrdenPersonalizado::CancelarTarea(){ 00157 utilidad_finalizada=false; 00158 close(); 00159 this->finished(0); 00160 this->setResult(0); 00161 } 00162 00163 00164 void DialogOrdenPersonalizado::AcabarTarea(){ 00165 00166 for(int i=0; i<ui->ListaImagenes->topLevelItemCount(); i++){ 00167 for(unsigned j=0; j<imagenes_copia.size(); j++){ 00168 if(ui->ListaImagenes->topLevelItem(i)->text(0)==imagenes_copia[j].nombre){ 00169 imagenes_final.push_back(imagenes_copia[j]); 00170 } 00171 } 00172 } 00173 utilidad_finalizada=true; 00174 close(); 00175 this->finished(1); 00176 this->setResult(1); 00177 } 00178 00179 bool DialogOrdenPersonalizado::ComprobarFinUtilidad(){ 00180 return utilidad_finalizada; 00181 00182 }