ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/s10k/Vago/packageWizard/packagepage4.cpp
Revision: 1093
Committed: Sat Dec 30 13:57:32 2017 UTC (7 years, 9 months ago) by s10k
Content type: text/x-c++src
File size: 5970 byte(s)
Log Message:
Vago 1.4

File Contents

# Content
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 }