mainwindow.cpp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include "basicproperty.h"
  4. #include "changenamedialog.h"
  5. #include "collectionwindow.h"
  6. #include "statusconfiguration.h"
  7. #include "containerpool.h"
  8. #include "resfiledialog.h"
  9. #include <QListWidgetItem>
  10. #include <QListWidget>
  11. #include <QLabel>
  12. #include <iostream>
  13. #include <QHBoxLayout>
  14. #include <QMessageBox>
  15. #include <QFileDialog>
  16. #include <QDragEnterEvent>
  17. #include <QMimeData>
  18. #include <QUrl>
  19. MainWindow::MainWindow(QWidget *parent)
  20. : QMainWindow(parent)
  21. , ui(new Ui::MainWindow)
  22. {
  23. ui->setupUi(this);
  24. QPixmap pix("/Users/menglanluo/pic.png");
  25. ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
  26. this->setAcceptDrops(true);
  27. resource = new QLineEdit(this);
  28. resource->setAcceptDrops(false);
  29. ui->tableWidget_animation->setHorizontalHeaderLabels({"名称","资源","时间线","z-Order"});
  30. }
  31. MainWindow::~MainWindow()
  32. {
  33. delete ui;
  34. }
  35. //TODO: 修改图标后更新列表对应元素的图标
  36. void MainWindow::on_pushButton_chooseFile_clicked()
  37. {
  38. QString file_name = QFileDialog::getOpenFileName(this,"Open a file",QDir::homePath());
  39. QPixmap pix(file_name);
  40. ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
  41. }
  42. void MainWindow::dragEnterEvent(QDragEnterEvent *event)
  43. {
  44. if(event->mimeData()->hasUrls()){
  45. event->acceptProposedAction();
  46. }
  47. else{
  48. event->ignore();
  49. }
  50. }
  51. void MainWindow::dropEvent(QDropEvent *event)
  52. {
  53. const QMimeData *mimeData = event->mimeData();
  54. if(mimeData->hasUrls()){
  55. QList<QUrl> urls = mimeData->urls();
  56. QString urlName = urls.at(0).toLocalFile();
  57. QString fileName = urlName;
  58. resource->setText(fileName);
  59. }
  60. }
  61. void MainWindow::on_pushButton_addAnimation_clicked()
  62. {
  63. int rowNum = ui->tableWidget_animation->rowCount();
  64. // ui->tableWidget_animation->insertRow(rowNum);
  65. ui->tableWidget_animation->setRowCount(rowNum+1);
  66. //TODO: 命名唯一性检查
  67. ui->tableWidget_animation->setItem(rowNum,0,new QTableWidgetItem("anim_1"));
  68. QTableWidgetItem* res = new QTableWidgetItem("双击添加资源文件");
  69. // 此单元格不可编辑
  70. res->setFlags(res->flags() & ~Qt::ItemIsEditable);
  71. ui->tableWidget_animation->setItem(rowNum,1,res);
  72. ui->tableWidget_animation->setCellWidget(rowNum,2,new QComboBox);
  73. ui->tableWidget_animation->setItem(rowNum,3,new QTableWidgetItem("0"));
  74. }
  75. void MainWindow::on_pushButton_addElem_clicked()
  76. {
  77. ui->listWidget_elem->addItem(new QListWidgetItem(QIcon("/Users/menglanluo/菜狗.png"),"新加元素"));
  78. }
  79. void MainWindow::on_pushButton_delElem_clicked()
  80. {
  81. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除元素","确定要删除此元素吗?");
  82. if(reply == QMessageBox::Yes){
  83. delete ui->listWidget_elem->takeItem(ui->listWidget_elem->currentRow());
  84. }
  85. }
  86. void MainWindow::on_pushButton_addCollectAnim_clicked()
  87. {
  88. //TODO: 检查默认名称唯一性
  89. ui->listWidget_collectAnim->addItem(new QListWidgetItem("collAnim_1"));
  90. }
  91. void MainWindow::on_pushButton_delCollectAnim_clicked()
  92. {
  93. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除动画","确定要删除此收集动画吗?");
  94. if(reply == QMessageBox::Yes){
  95. delete ui->listWidget_collectAnim->takeItem(ui->listWidget_collectAnim->currentRow());
  96. }
  97. }
  98. void MainWindow::on_listWidget_collectAnim_itemDoubleClicked(QListWidgetItem *item)
  99. {
  100. ChangeNameDialog newName;
  101. newName.setModal(true);
  102. newName.exec();
  103. if(!newName.getNewName().isEmpty()){
  104. item->setText(newName.getNewName());
  105. }
  106. }
  107. void MainWindow::on_pushButton_addStatus_clicked()
  108. {
  109. //TODO: 检查状态值合法性
  110. ui->listWidget_status->addItem("1");
  111. }
  112. void MainWindow::on_pushButton_delStatus_clicked()
  113. {
  114. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此状态吗?");
  115. if(reply == QMessageBox::Yes){
  116. delete ui->listWidget_status->takeItem(ui->listWidget_status->currentRow());
  117. }
  118. }
  119. void MainWindow::on_pushButton_addContainer_clicked()
  120. {
  121. //TODO: 检查名称唯一性
  122. ui->listWidget_pool->addItem("pool1");
  123. }
  124. void MainWindow::on_pushButton_delContainer_clicked()
  125. {
  126. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此容器吗?");
  127. if(reply == QMessageBox::Yes){
  128. delete ui->listWidget_pool->takeItem(ui->listWidget_pool->currentRow());
  129. }
  130. }
  131. void MainWindow::on_listWidget_pool_itemDoubleClicked(QListWidgetItem *item)
  132. {
  133. ChangeNameDialog newName;
  134. newName.setModal(true);
  135. newName.exec();
  136. QString name = newName.getNewName();
  137. if(!name.isEmpty()){
  138. //TODO: 检查新名字唯一性
  139. item->setText(name);
  140. }
  141. }
  142. void MainWindow::on_listWidget_elem_itemDoubleClicked(QListWidgetItem *item)
  143. {
  144. ChangeNameDialog newName;
  145. newName.setModal(true);
  146. newName.exec();
  147. if(!newName.getNewName().isEmpty()){
  148. item->setText(newName.getNewName());
  149. }
  150. }
  151. void MainWindow::on_tableWidget_animation_cellDoubleClicked(int row, int column)
  152. {
  153. if(column == 1){
  154. ResFileDialog res;
  155. res.setModal(true);
  156. res.exec();
  157. QString fileName = res.getResName();
  158. if(!fileName.isEmpty()){
  159. ui->tableWidget_animation->setItem(row,column,new QTableWidgetItem(fileName));
  160. //TODO: 加入资源生成时间线代码
  161. QComboBox* timeLine = new QComboBox;
  162. timeLine->addItem("lml");
  163. timeLine->addItem("xdf");
  164. timeLine->addItem("cqf");
  165. ui->tableWidget_animation->setCellWidget(row,column+1,timeLine);
  166. }
  167. }
  168. }
  169. //TODO: 同步删除数据
  170. void MainWindow::on_pushButton_delAnimation_clicked()
  171. {
  172. QMessageBox::StandardButton reply = QMessageBox::question(this,"删除动画","确定要删除此动画吗?");
  173. if(reply == QMessageBox::Yes){
  174. int curRow = ui->tableWidget_animation->currentRow();
  175. ui->tableWidget_animation->removeRow(curRow);
  176. }
  177. }
  178. void MainWindow::on_tableWidget_animation_itemChanged(QTableWidgetItem *item)
  179. {
  180. int column = item->column();
  181. int row = item->row();
  182. //名字发生修改,检查新名称唯一性
  183. if(column == 0){
  184. std::cout<<"name:"<<qPrintable(ui->tableWidget_animation->item(row,0)->text())<<std::endl;
  185. }
  186. //资源名发生修改
  187. else if(column == 1){
  188. std::cout<<"resource:"<<qPrintable(ui->tableWidget_animation->item(row,1)->text())<<std::endl;
  189. }
  190. // 时间线发生修改,居然没有反应。。。
  191. else if(column == 2){
  192. QComboBox *timeLine = qobject_cast<QComboBox*>(ui->tableWidget_animation->cellWidget(row,2));
  193. std::cout<<"timeLine:"<<qPrintable(timeLine->currentText())<<std::endl;
  194. }
  195. //z-Order值发生修改,检查z-Order值合法性
  196. else{
  197. std::cout<<"z-Order:"<<qPrintable(ui->tableWidget_animation->item(row,3)->text())<<std::endl;
  198. }
  199. }