#include "packagepage4.h" #include "ui_packagepage4.h" PackagePage4::PackagePage4(QWidget *parent) : QWizardPage(parent), ui(new Ui::PackagePage4) { ui->setupUi(this); this->setTitle("Package Files"); this->setSubTitle("Add the resources to the corresponding platform for your package."); commonTable=ui->twCommon; windowsTable=ui->twWindows; macTable=ui->twMac; //Setup package resources tables QStringList headers = QStringList()<<"Folder"<<"Type"<<"Full Path"; ui->twCommon->setHorizontalHeaderLabels(headers); ui->twCommon->setColumnWidth(1,75); //set size for type ui->twWindows->setHorizontalHeaderLabels(headers); ui->twWindows->setColumnWidth(1,75); ui->twMac->setHorizontalHeaderLabels(headers); ui->twMac->setColumnWidth(1,75); // //Set +- tooltips on_pbSwitchFiles_clicked(); ui->tbCommonMinus->setToolTip("Remove the selected common OS folders"); ui->tbWindowsMinus->setToolTip("Remove the selected Windows OS folders"); ui->tbMacMinus->setToolTip("Remove the selected Mac OS folders"); ui->lbCommon->setText("Common"); // Don't use rich text in qtdesigner because it generates platform dependent code ui->lbWindowsOnly->setText("Windows Only"); ui->lbMacOnly->setText("Mac OS Only"); connectSlots(); } PackagePage4::~PackagePage4() { delete ui; } void PackagePage4::on_pbSwitchFiles_clicked() { if(ui->pbSwitchFiles->text()==".oni files"){ ui->pbSwitchFiles->setText(".bsl files"); ui->pbSwitchFiles->setToolTip("Click to add folders with .oni-patch files instead"); } else if(ui->pbSwitchFiles->text()==".bsl files"){ ui->pbSwitchFiles->setText(".oni-patch files"); ui->pbSwitchFiles->setToolTip("Click to add folders with .oni files instead"); } else{ ui->pbSwitchFiles->setText(".oni files"); ui->pbSwitchFiles->setToolTip("Click to add folders with .bsl files files instead"); } ui->tbCommonPlus->setToolTip("Add common OS folders with "+ui->pbSwitchFiles->text()); ui->tbWindowsPlus->setToolTip("Add Windows OS folders with "+ui->pbSwitchFiles->text()); ui->tbMacPlus->setToolTip("Add Mac OS folders with "+ui->pbSwitchFiles->text()); } void PackagePage4::addResourcesPackage(DropTableWidget *myTable, QStringList resources){ //Pre-processing (check if received only folders) for(const QString &myFile : resources){ if(!QDir(myFile).exists()){ Util::Dialogs::showError("Only folders are allowed for this operation."); return; } } QString type=ui->pbSwitchFiles->text().replace(" files",""); for(QString currentFolder: resources){ currentFolder=Util::FileSystem::normalizePath(currentFolder); //normalize path //Get actual number rows int twSize=myTable->rowCount(); //increase the rows for the new item myTable->setRowCount(twSize+1); //Add to table and list to QTableWidgetItem *newFolder = new QTableWidgetItem(Util::FileSystem::cutName(currentFolder)); QTableWidgetItem *newType = new QTableWidgetItem(type); QTableWidgetItem *newFullPath = new QTableWidgetItem(currentFolder); myTable->setItem(twSize,0,newFolder); myTable->setItem(twSize,1,newType); myTable->setItem(twSize,2,newFullPath); myTable->updateTableToolTips(twSize); //Update tool tips } } void PackagePage4::connectSlots(){ //Drop signal for Packages table connect(ui->twCommon, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); connect(ui->twWindows, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); connect(ui->twMac, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); } void PackagePage4::on_tbCommonPlus_clicked() { addTableContents(ui->twCommon); } void PackagePage4::on_tbCommonMinus_clicked() { removeTableContents(ui->twCommon); } void PackagePage4::on_tbWindowsPlus_clicked() { addTableContents(ui->twWindows); } void PackagePage4::on_tbWindowsMinus_clicked() { removeTableContents(ui->twWindows); } void PackagePage4::on_tbMacPlus_clicked() { addTableContents(ui->twMac); } void PackagePage4::on_tbMacMinus_clicked() { removeTableContents(ui->twMac); } void PackagePage4::addTableContents(DropTableWidget *myTable){ if(ui->pbSwitchFiles->text()==".oni files"){ addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .oni files...")); } else if(ui->pbSwitchFiles->text()==".bsl files"){ addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .bsl files...")); } else{ addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .oni-patch files...")); } } void PackagePage4::removeTableContents(DropTableWidget *myTable){ int size = myTable->selectionModel()->selectedRows().size(); if(size==0){ Util::Dialogs::showInfo("Select a row first."); return; } if(Util::Dialogs::showQuestion(this,"Are you sure you want to delete the selected rows?")){ for(int i=0; iremoveRow(myTable->selectionModel()->selectedRows().at(size-i-1).row()); } } } bool PackagePage4::validatePage(){ if(ui->twCommon->rowCount()==0 && ui->twWindows->rowCount()==0 && ui->twMac->rowCount()==0){ Util::Dialogs::showError("You need to add some folders with resources first!"); return false; } return true; }