1 |
#include "packagepage4.h" |
2 |
#include "ui_packagepage4.h" |
3 |
|
4 |
PackagePage4::PackagePage4(QWidget *parent) : |
5 |
QWizardPage(parent), |
6 |
ui(new Ui::PackagePage4) |
7 |
{ |
8 |
ui->setupUi(this); |
9 |
this->setTitle("Package Files"); |
10 |
this->setSubTitle("Add the resources to the corresponding platform for your package."); |
11 |
|
12 |
commonTable=ui->twCommon; |
13 |
windowsTable=ui->twWindows; |
14 |
macTable=ui->twMac; |
15 |
|
16 |
//Setup package resources tables |
17 |
QStringList headers = QStringList()<<"Folder"<<"Type"<<"Full Path"; |
18 |
ui->twCommon->setHorizontalHeaderLabels(headers); |
19 |
ui->twCommon->setColumnWidth(1,75); //set size for type |
20 |
ui->twWindows->setHorizontalHeaderLabels(headers); |
21 |
ui->twWindows->setColumnWidth(1,75); |
22 |
ui->twMac->setHorizontalHeaderLabels(headers); |
23 |
ui->twMac->setColumnWidth(1,75); |
24 |
// |
25 |
|
26 |
//Set +- tooltips |
27 |
on_pbSwitchFiles_clicked(); |
28 |
|
29 |
ui->tbCommonMinus->setToolTip("Remove the selected common OS folders"); |
30 |
ui->tbWindowsMinus->setToolTip("Remove the selected Windows OS folders"); |
31 |
ui->tbMacMinus->setToolTip("Remove the selected Mac OS folders"); |
32 |
|
33 |
ui->lbCommon->setText("<html><b>Common</b></html>"); // Don't use rich text in qtdesigner because it generates platform dependent code |
34 |
ui->lbWindowsOnly->setText("<html><b>Windows Only</b></html>"); |
35 |
ui->lbMacOnly->setText("<html><b>Mac OS Only</b></html>"); |
36 |
|
37 |
|
38 |
|
39 |
connectSlots(); |
40 |
} |
41 |
|
42 |
PackagePage4::~PackagePage4() |
43 |
{ |
44 |
delete ui; |
45 |
} |
46 |
|
47 |
void PackagePage4::on_pbSwitchFiles_clicked() |
48 |
{ |
49 |
if(ui->pbSwitchFiles->text()==".oni files"){ |
50 |
ui->pbSwitchFiles->setText(".bsl files"); |
51 |
ui->pbSwitchFiles->setToolTip("Click to add folders with .oni-patch files instead"); |
52 |
} |
53 |
else if(ui->pbSwitchFiles->text()==".bsl files"){ |
54 |
ui->pbSwitchFiles->setText(".oni-patch files"); |
55 |
ui->pbSwitchFiles->setToolTip("Click to add folders with .oni files instead"); |
56 |
} |
57 |
else{ |
58 |
ui->pbSwitchFiles->setText(".oni files"); |
59 |
ui->pbSwitchFiles->setToolTip("Click to add folders with .bsl files files instead"); |
60 |
} |
61 |
|
62 |
ui->tbCommonPlus->setToolTip("Add common OS folders with "+ui->pbSwitchFiles->text()); |
63 |
ui->tbWindowsPlus->setToolTip("Add Windows OS folders with "+ui->pbSwitchFiles->text()); |
64 |
ui->tbMacPlus->setToolTip("Add Mac OS folders with "+ui->pbSwitchFiles->text()); |
65 |
} |
66 |
|
67 |
|
68 |
void PackagePage4::addResourcesPackage(DropTableWidget *myTable, QStringList resources){ |
69 |
|
70 |
//Pre-processing (check if received only folders) |
71 |
for(const QString &myFile : resources){ |
72 |
if(!QDir(myFile).exists()){ |
73 |
Util::Dialogs::showError("Only folders are allowed for this operation."); |
74 |
return; |
75 |
} |
76 |
} |
77 |
|
78 |
QString type=ui->pbSwitchFiles->text().replace(" files",""); |
79 |
|
80 |
for(QString currentFolder: resources){ |
81 |
|
82 |
currentFolder=Util::FileSystem::normalizePath(currentFolder); //normalize path |
83 |
|
84 |
//Get actual number rows |
85 |
int twSize=myTable->rowCount(); |
86 |
|
87 |
//increase the rows for the new item |
88 |
myTable->setRowCount(twSize+1); |
89 |
|
90 |
//Add to table and list to |
91 |
QTableWidgetItem *newFolder = new QTableWidgetItem(Util::FileSystem::cutName(currentFolder)); |
92 |
QTableWidgetItem *newType = new QTableWidgetItem(type); |
93 |
QTableWidgetItem *newFullPath = new QTableWidgetItem(currentFolder); |
94 |
|
95 |
myTable->setItem(twSize,0,newFolder); |
96 |
myTable->setItem(twSize,1,newType); |
97 |
myTable->setItem(twSize,2,newFullPath); |
98 |
myTable->updateTableToolTips(twSize); //Update tool tips |
99 |
} |
100 |
} |
101 |
|
102 |
void PackagePage4::connectSlots(){ |
103 |
//Drop signal for Packages table |
104 |
connect(ui->twCommon, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); |
105 |
connect(ui->twWindows, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); |
106 |
connect(ui->twMac, SIGNAL(dropped(DropTableWidget*,QStringList)), this, SLOT(addResourcesPackage(DropTableWidget*,QStringList))); |
107 |
} |
108 |
|
109 |
void PackagePage4::on_tbCommonPlus_clicked() |
110 |
{ |
111 |
addTableContents(ui->twCommon); |
112 |
} |
113 |
|
114 |
void PackagePage4::on_tbCommonMinus_clicked() |
115 |
{ |
116 |
removeTableContents(ui->twCommon); |
117 |
} |
118 |
|
119 |
void PackagePage4::on_tbWindowsPlus_clicked() |
120 |
{ |
121 |
addTableContents(ui->twWindows); |
122 |
} |
123 |
|
124 |
void PackagePage4::on_tbWindowsMinus_clicked() |
125 |
{ |
126 |
removeTableContents(ui->twWindows); |
127 |
} |
128 |
|
129 |
void PackagePage4::on_tbMacPlus_clicked() |
130 |
{ |
131 |
addTableContents(ui->twMac); |
132 |
} |
133 |
|
134 |
void PackagePage4::on_tbMacMinus_clicked() |
135 |
{ |
136 |
removeTableContents(ui->twMac); |
137 |
} |
138 |
|
139 |
void PackagePage4::addTableContents(DropTableWidget *myTable){ |
140 |
if(ui->pbSwitchFiles->text()==".oni files"){ |
141 |
addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .oni files...")); |
142 |
} |
143 |
else if(ui->pbSwitchFiles->text()==".bsl files"){ |
144 |
addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .bsl files...")); |
145 |
} |
146 |
else{ |
147 |
addResourcesPackage(myTable,Util::Dialogs::multipleDirSelection("Choose folders with .oni-patch files...")); |
148 |
} |
149 |
} |
150 |
|
151 |
void PackagePage4::removeTableContents(DropTableWidget *myTable){ |
152 |
int size = myTable->selectionModel()->selectedRows().size(); |
153 |
|
154 |
if(size==0){ |
155 |
Util::Dialogs::showInfo("Select a row first."); |
156 |
return; |
157 |
} |
158 |
|
159 |
if(Util::Dialogs::showQuestion(this,"Are you sure you want to delete the selected rows?")){ |
160 |
for(int i=0; i<size; i++){ |
161 |
myTable->removeRow(myTable->selectionModel()->selectedRows().at(size-i-1).row()); |
162 |
} |
163 |
} |
164 |
} |
165 |
|
166 |
bool PackagePage4::validatePage(){ |
167 |
if(ui->twCommon->rowCount()==0 && ui->twWindows->rowCount()==0 && ui->twMac->rowCount()==0){ |
168 |
Util::Dialogs::showError("You need to add some folders with resources first!"); |
169 |
return false; |
170 |
} |
171 |
|
172 |
return true; |
173 |
} |