| 1 | #include "bgimagepage2.h"
 | 
|---|
| 2 | #include "ui_bgimagepage2.h"
 | 
|---|
| 3 | 
 | 
|---|
| 4 | BGImagePage2::BGImagePage2(QWidget *parent) :
 | 
|---|
| 5 |     QWizardPage(parent),
 | 
|---|
| 6 |     ui(new Ui::BGImagePage2)
 | 
|---|
| 7 | {
 | 
|---|
| 8 |     ui->setupUi(this);
 | 
|---|
| 9 | 
 | 
|---|
| 10 |     this->setTitle("Image to use as background");
 | 
|---|
| 11 |     this->setSubTitle("Add here the image that you want to convert. Image width and height must be greater than or equal 256 pixels. Example of valid image resolutions: 640x480, 1024x768.");
 | 
|---|
| 12 | 
 | 
|---|
| 13 |     //Register fields
 | 
|---|
| 14 |     registerField("leImageFullPath", ui->leImageFullPath);
 | 
|---|
| 15 |     registerField("lbImageType", ui->lbImageType, "text");
 | 
|---|
| 16 | }
 | 
|---|
| 17 | 
 | 
|---|
| 18 | void BGImagePage2::initializePage()
 | 
|---|
| 19 | {
 | 
|---|
| 20 |     // To the first time the page is displayed and when the wizard is restarted
 | 
|---|
| 21 |     if(ui->leImageFullPath->text().isEmpty()){
 | 
|---|
| 22 |         // enable / hide image fields until we have an image
 | 
|---|
| 23 |         ui->gbImageInformation->setEnabled(false);
 | 
|---|
| 24 |         ui->lbImagePreview->hide();
 | 
|---|
| 25 |         ui->lbImageName->hide();
 | 
|---|
| 26 |         ui->lbImageWidth->hide();
 | 
|---|
| 27 |         ui->lbImageHeight->hide();
 | 
|---|
| 28 |         ui->lbImageSize->hide();
 | 
|---|
| 29 |         ui->lbDateCreated->hide();
 | 
|---|
| 30 |         ui->lbDateModified->hide();
 | 
|---|
| 31 |         ui->lbImageType->hide();
 | 
|---|
| 32 |     }
 | 
|---|
| 33 | }
 | 
|---|
| 34 | 
 | 
|---|
| 35 | bool BGImagePage2::validatePage(){
 | 
|---|
| 36 |     QString leImageFullPath=ui->leImageFullPath->text().trimmed();
 | 
|---|
| 37 | 
 | 
|---|
| 38 |     if(!validateField(leImageFullPath)){
 | 
|---|
| 39 |         return false;
 | 
|---|
| 40 |     }
 | 
|---|
| 41 | 
 | 
|---|
| 42 |     return true;
 | 
|---|
| 43 | }
 | 
|---|
| 44 | 
 | 
|---|
| 45 | bool BGImagePage2::validateField(QString &field){
 | 
|---|
| 46 |     if(field.isEmpty()){
 | 
|---|
| 47 |         Util::Dialogs::showError("You need to choose an image.");
 | 
|---|
| 48 |         return false;
 | 
|---|
| 49 |     }
 | 
|---|
| 50 | 
 | 
|---|
| 51 |     return true;
 | 
|---|
| 52 | }
 | 
|---|
| 53 | 
 | 
|---|
| 54 | BGImagePage2::~BGImagePage2()
 | 
|---|
| 55 | {
 | 
|---|
| 56 |     delete ui;
 | 
|---|
| 57 | }
 | 
|---|
| 58 | 
 | 
|---|
| 59 | void BGImagePage2::on_pbBrowse_clicked()
 | 
|---|
| 60 | {
 | 
|---|
| 61 |     QString selectedImage = QFileDialog::getOpenFileName(this,"Choose the image file...","./" , "Image (*.JPG *.JPEG *.PNG)");
 | 
|---|
| 62 | 
 | 
|---|
| 63 |     if(!selectedImage.isEmpty()){
 | 
|---|
| 64 | 
 | 
|---|
| 65 |         QImage myImage;
 | 
|---|
| 66 |         if(!myImage.load(selectedImage)){
 | 
|---|
| 67 |             UtilVago::showAndLogErrorPopUp("Couldn't load image '" + Util::FileSystem::cutNameWithoutBackSlash(selectedImage) + "'. Is the image corrupt?");
 | 
|---|
| 68 |             return;
 | 
|---|
| 69 |         }
 | 
|---|
| 70 | 
 | 
|---|
| 71 |         if(myImage.width() < 256 || myImage.height() < 256){
 | 
|---|
| 72 |             UtilVago::showAndLogErrorPopUp("Image '" + Util::FileSystem::cutNameWithoutBackSlash(selectedImage) +
 | 
|---|
| 73 |                                            "' does not have a width and height >= 256.");
 | 
|---|
| 74 |             return;
 | 
|---|
| 75 |         }
 | 
|---|
| 76 | 
 | 
|---|
| 77 |         ui->leImageFullPath->setText(selectedImage);
 | 
|---|
| 78 |         ui->leImageFullPath->setToolTip(selectedImage);
 | 
|---|
| 79 |         setImage(selectedImage, myImage);
 | 
|---|
| 80 |     }
 | 
|---|
| 81 | }
 | 
|---|
| 82 | 
 | 
|---|
| 83 | void BGImagePage2::setImage(const QString &imagePath, const QImage &image){
 | 
|---|
| 84 | 
 | 
|---|
| 85 |     QFileInfo myImageFileInfo(imagePath);
 | 
|---|
| 86 | 
 | 
|---|
| 87 |     ui->gbImageInformation->setEnabled(true);
 | 
|---|
| 88 |     ui->lbImagePreview->show();
 | 
|---|
| 89 |     ui->lbImageName->show();
 | 
|---|
| 90 |     ui->lbImageWidth->show();
 | 
|---|
| 91 |     ui->lbImageHeight->show();
 | 
|---|
| 92 |     ui->lbImageSize->show();
 | 
|---|
| 93 |     ui->lbDateCreated->show();
 | 
|---|
| 94 |     ui->lbDateModified->show();
 | 
|---|
| 95 |     ui->lbImageType->show();
 | 
|---|
| 96 | 
 | 
|---|
| 97 |     QPixmap previewImage(imagePath);
 | 
|---|
| 98 |     ui->lbImagePreview->setPixmap( previewImage );
 | 
|---|
| 99 |     ui->lbImagePreview->setMask(previewImage.mask());
 | 
|---|
| 100 | 
 | 
|---|
| 101 |     // Thanks bukkfa!
 | 
|---|
| 102 |     // http://stackoverflow.com/questions/5653114/display-image-in-qt-to-fit-label-size
 | 
|---|
| 103 |     ui->lbImagePreview->setScaledContents( true );
 | 
|---|
| 104 |     ui->lbImagePreview->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored );
 | 
|---|
| 105 | 
 | 
|---|
| 106 |     // Update image information
 | 
|---|
| 107 |     QString imageName = myImageFileInfo.baseName().replace("." + myImageFileInfo.suffix(), "");
 | 
|---|
| 108 | 
 | 
|---|
| 109 |     ui->lbImageName->setToolTip(imageName);
 | 
|---|
| 110 | 
 | 
|---|
| 111 |     if(imageName.length() > 30){
 | 
|---|
| 112 |         imageName = imageName.mid(0,27) + "...";
 | 
|---|
| 113 |     }
 | 
|---|
| 114 | 
 | 
|---|
| 115 |     ui->lbImageName->setText(imageName);
 | 
|---|
| 116 |     ui->lbImageWidth->setText(QString::number(image.width()));
 | 
|---|
| 117 |     ui->lbImageHeight->setText(QString::number(image.height()));
 | 
|---|
| 118 |     ui->lbImageType->setText(myImageFileInfo.suffix());
 | 
|---|
| 119 |     ui->lbImageSize->setText(QString::number(myImageFileInfo.size()/1024.0));
 | 
|---|
| 120 |     ui->lbDateCreated->setText(myImageFileInfo.created().toString());
 | 
|---|
| 121 |     ui->lbDateModified->setText(myImageFileInfo.lastModified().toString());
 | 
|---|
| 122 | 
 | 
|---|
| 123 |     ui->lbImagePreview->show();
 | 
|---|
| 124 | }
 | 
|---|