ff7tk  0.02
Toolkit for making FF7 Tools
MateriaEditor.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // copyright 2012 -2016 Chris Rizzitello <sithlord48@gmail.com> //
3 // //
4 // This file is part of FF7tk //
5 // //
6 // FF7tk is free software: you can redistribute it and/or modify //
7 // it under the terms of the GNU General Public License as published by //
8 // the Free Software Foundation, either version 3 of the License, or //
9 // (at your option) any later version. //
10 // //
11 // FF7tk is distributed in the hope that it will be useful, //
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
14 // GNU General Public License for more details. //
15 /****************************************************************************/
16 #include "MateriaEditor.h"
17 
18 MateriaEditor::MateriaEditor(qreal Scale,QWidget *parent):QWidget(parent)
19 {
20  scale=Scale;
21  init_display();
22  init_data();
24  setMateria(FF7Materia::EmptyId,FF7Materia::MaxMateriaAp);//Smallest Possible Size. ready for use now.
25 }
26 MateriaEditor::MateriaEditor(quint8 materia_id,qint32 materia_ap,qreal Scale,QWidget *parent):QWidget(parent)
27 {
28  scale=Scale;
29  init_display();
30  init_data();
32  setMateria(materia_id,materia_ap);
33 }
35 {//Make Widgets and set Properties.
36  //Widget Creation.
37  combo_type =new QComboBox;
38  combo_materia = new QComboBox;
39  sb_ap = new QSpinBox;
40  lbl_slash = new QLabel("/");
41  lbl_max_ap = new QLabel;
42  btn_rm_materia = new QPushButton;
43  btn_rm_materia->setShortcut(QKeySequence::Delete);
44  btn_copy_materia = new QPushButton;
45  btn_copy_materia->setShortcut(QKeySequence::Copy);
46  btn_paste_materia = new QPushButton;
47  btn_paste_materia->setShortcut(QKeySequence::Paste);
48  box_stars = new QFrame;
49  btn_star1 = new QPushButton;
50  btn_star2 = new QPushButton;
51  btn_star3 = new QPushButton;
52  btn_star4 = new QPushButton;
53  btn_star5 = new QPushButton;
54  eskill_list = new QListWidget;
55  box_skills = new QGroupBox;
56  list_skills = new QListWidget;
57  box_stats = new QGroupBox;
58  lbl_stats = new QLabel;
59  btn_clear_eskills = new QPushButton;
60  btn_master_eskills = new QPushButton;
61  eskill_group = new QGroupBox;
62  eskill_group->setMinimumHeight(150);
63  list_status = new QListWidget;
64  box_status_effects = new QGroupBox;
65  frm_name_type =new QFrame;
66  frm_ap = new QFrame;
67  frm_ap_stars = new QFrame;
68  lbl_materiaIcon = new QLabel;
69  lbl_materiaName= new QLabel;
70  v_spacer = new QSpacerItem(0,0,QSizePolicy::Minimum,QSizePolicy::Expanding);
71  //Special Properties Of Above Widgets
72  sb_ap->setWrapping(1);
73  sb_ap->setAlignment(Qt::AlignCenter);
74  btn_rm_materia->setIcon(QIcon::fromTheme(QString("edit-clear"),QPixmap(":/common/edit-clear")));
75  btn_copy_materia->setIcon(QIcon::fromTheme(QString("edit-copy"),QPixmap(":/common/edit-copy")));
76  btn_paste_materia->setIcon(QIcon::fromTheme(QString("edit-paste"),QPixmap(":/common/edit-paste")));
77 
78  QString style=QString("QPushButton:enabled{background-color: rgba(0,0,0,0);border:0px solid;} QPushButton:hover{background-color:rgba(%1,%2,%3,96);}").arg(QString::number(this->palette().highlight().color().red()),QString::number(this->palette().highlight().color().green()),QString::number(this->palette().highlight().color().blue()));
79  btn_star1->setStyleSheet(style);
80  btn_star2->setStyleSheet(style);
81  btn_star3->setStyleSheet(style);
82  btn_star4->setStyleSheet(style);
83  btn_star5->setStyleSheet(style);
84  btn_star1->setFlat(true);
85  btn_star2->setFlat(true);
86  btn_star3->setFlat(true);
87  btn_star4->setFlat(true);
88  btn_star5->setFlat(true);
89  //Set Label Text
90  lbl_slash->setText("/");
91  btn_clear_eskills->setText(tr("Clear"));
92  btn_master_eskills->setText(tr("Master"));
93  box_skills->setTitle(tr("Skills"));
94  box_stats->setTitle(tr("Stat Changes"));
95  btn_rm_materia->setToolTip(tr("Delete"));
96  btn_rm_materia->setStyleSheet(style);
97  btn_rm_materia->setFlat(true);
98  btn_copy_materia->setToolTip(tr("Copy"));
99  btn_copy_materia->setStyleSheet(style);
100  btn_copy_materia->setFlat(true);
101  btn_paste_materia->setToolTip(tr("Paste"));
102  btn_paste_materia->setStyleSheet(style);
103  btn_paste_materia->setFlat(true);
104  box_status_effects->setTitle(tr("Added Effect"));
105  //set Hidden
106  eskill_group->setHidden(true);
107  box_status_effects->setHidden(true);
108  box_stats->setHidden(true);
109 
110  //set Minimum Sizes.
111  btn_copy_materia->setFixedSize(24*scale,24*scale);
112  btn_paste_materia->setFixedSize(24*scale,24*scale);
113  btn_rm_materia->setFixedSize(24*scale,24*scale);
114  lbl_materiaIcon->setFixedSize(24*scale,24*scale);
115  combo_type->setMinimumHeight(24*scale);
116  combo_materia->setMinimumHeight(24*scale);
117 
118  list_skills->addItem(new QListWidgetItem("Item"));
119  list_skills->setFixedHeight(list_skills->sizeHintForRow(0)*5 +list_skills->contentsMargins().top()+ list_skills->contentsMargins().bottom()+3);
120  list_skills->setSelectionMode(QAbstractItemView::NoSelection);
121  list_status->setFixedHeight(list_skills->height());
122  list_status->setSelectionMode(QAbstractItemView::NoSelection);
123 
124  //size policies
125  combo_materia->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed);
126  combo_type->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed);
127  sb_ap->setMinimumWidth(fontMetrics().width(QChar('W'))*7);
128  sb_ap->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
129  btn_rm_materia->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed);
130  btn_copy_materia->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed);
131  btn_paste_materia->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed);
132  box_stats->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
133  frm_ap->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed);
134  box_status_effects->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum);
135 
136 //Set up display
137  this->setContentsMargins(0,0,0,0);
138  QHBoxLayout * type_name_layout = new QHBoxLayout;
139  type_name_layout->addWidget(lbl_materiaIcon);
140  type_name_layout->addWidget(lbl_materiaName);
141  type_name_layout->addWidget(combo_type);
142  type_name_layout->addWidget(combo_materia);
143  type_name_layout->addWidget(btn_copy_materia);
144  type_name_layout->addWidget(btn_paste_materia);
145  type_name_layout->addWidget(btn_rm_materia);
146  type_name_layout->setContentsMargins(3,0,0,0);
147 
148  QHBoxLayout * ap_layout = new QHBoxLayout;
149  ap_layout->addWidget(sb_ap);
150  ap_layout->addWidget(lbl_slash);
151  lbl_slash->setFixedWidth(this->font().pointSize());
152  ap_layout->addWidget(lbl_max_ap);
153  ap_layout->setContentsMargins(0,0,0,0);
154  frm_ap->setLayout(ap_layout);
155 
156  frm_name_type->setLayout(type_name_layout);
157 
158  QHBoxLayout *stars = new QHBoxLayout;
159  stars->setContentsMargins(3,0,0,0);
160  stars->addWidget(btn_star1);
161  stars->addWidget(btn_star2);
162  stars->addWidget(btn_star3);
163  stars->addWidget(btn_star4);
164  stars->addWidget(btn_star5);
165  QSpacerItem *spacer2 = new QSpacerItem(30,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
166  stars->addSpacerItem(spacer2);
167  box_stars->setLayout(stars);
168 
169  /* Init Skills Area */
170  ap_stars_layout = new QGridLayout;
171  ap_stars_layout->setContentsMargins(0,0,0,0);
172  ap_stars_layout->addWidget(box_stars,0,0,1,1,0);
173  ap_stars_layout->addWidget(frm_ap,0,1,1,1,0);
174 
175  frm_ap_stars->setLayout(ap_stars_layout);
176  frm_ap_stars->setContentsMargins(0,0,0,0);
177 
178  QHBoxLayout *low_eskill_layout = new QHBoxLayout;
179  low_eskill_layout->setContentsMargins(0,0,0,0);
180  low_eskill_layout->addWidget(btn_master_eskills);
181  low_eskill_layout->addWidget(btn_clear_eskills);
182 
183  QVBoxLayout * eskill_layout = new QVBoxLayout;
184  eskill_layout->addWidget(eskill_list);
185  eskill_layout->addItem(low_eskill_layout);
186  eskill_layout->setContentsMargins(0,0,0,0);
187  eskill_layout->setSpacing(0);
188  eskill_group->setLayout(eskill_layout);
189 
190  QVBoxLayout *skill_layout = new QVBoxLayout;
191  skill_layout->addWidget(list_skills);
192  skill_layout->addWidget(eskill_group);
193 
194  box_skills->setLayout(skill_layout);
195  skill_layout->setContentsMargins(3,0,0,0);
196  skill_layout->setSpacing(2);
197 
198  QHBoxLayout *stat_layout = new QHBoxLayout;
199  stat_layout->setContentsMargins(3,0,0,0);
200  stat_layout->addWidget(lbl_stats);
201  box_stats->setLayout(stat_layout);
202 
203  QHBoxLayout * status_effect_layout = new QHBoxLayout;
204  status_effect_layout->addWidget(list_status);
205  status_effect_layout->setContentsMargins(3,0,0,0);
206  box_status_effects->setLayout(status_effect_layout);
207 
208  QHBoxLayout *skill_status_layout = new QHBoxLayout;
209  skill_status_layout->setContentsMargins(0,0,0,0);
210  skill_status_layout->addWidget(box_skills);
211  skill_status_layout->addWidget(box_status_effects);
212 
213  frm_skill_status = new QFrame;
214  frm_skill_status->setContentsMargins(0,0,0,0);
215  frm_skill_status->setLayout(skill_status_layout);
216  frm_skill_status->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
217 
218  QVBoxLayout *main_layout = new QVBoxLayout;
219  main_layout->setContentsMargins(3,0,0,0);
220  main_layout->setSpacing(2);
221  main_layout->addWidget(frm_name_type);
222  main_layout->addWidget(frm_ap_stars);
223  main_layout->addWidget(frm_skill_status);
224  main_layout->addWidget(box_stats);
225 
226  QVBoxLayout *Final = new QVBoxLayout(this);
227  Final->setSpacing(0);
228  Final->addLayout(main_layout);
229  Final->addSpacerItem(v_spacer);
230  Final->setContentsMargins(6,6,6,0);
231  this->setLayout(Final);
232 }
233 
235 {
236  connect(btn_star1,SIGNAL(clicked()),this,SLOT(btn_star1_clicked()));
237  connect(btn_star2,SIGNAL(clicked()),this,SLOT(btn_star2_clicked()));
238  connect(btn_star3,SIGNAL(clicked()),this,SLOT(btn_star3_clicked()));
239  connect(btn_star4,SIGNAL(clicked()),this,SLOT(btn_star4_clicked()));
240  connect(btn_star5,SIGNAL(clicked()),this,SLOT(btn_star5_clicked()));
241  connect(btn_rm_materia,SIGNAL(clicked()),this,SLOT(remove_materia()));
242  connect(btn_copy_materia,SIGNAL(clicked()),this,SLOT(copy_materia()));
243  connect(btn_paste_materia,SIGNAL(clicked()),this,SLOT(paste_materia()));
244  connect(sb_ap,SIGNAL(valueChanged(int)),this,SLOT(sb_ap_changed(int)));
245  connect(combo_type,SIGNAL(currentIndexChanged(int)),this,SLOT(type_changed(int)));
246  connect(eskill_list,SIGNAL(clicked(QModelIndex)),this,SLOT(eskill_list_clicked(QModelIndex)));
247  connect(combo_materia,SIGNAL(currentIndexChanged(QString)),this,SLOT(materia_changed(QString)));
248  connect(btn_master_eskills,SIGNAL(clicked()),this,SLOT(btn_master_eskill_clicked()));
249  connect(btn_clear_eskills,SIGNAL(clicked()),this,SLOT(btn_clear_eskill_clicked()));
250 }
252 {
253  data = new FF7Materia;
254  //Fill Eskill List.
255  for(int i=0;i<24;i++)
256  {
257  QListWidgetItem *newItem = new QListWidgetItem();
258  newItem->setText(data->enemySkill(i));
259  newItem->setCheckState(Qt::Unchecked);
260  eskill_list->addItem(newItem);
261  }
262  QString style=QString("QListWidget::item { padding-left: 0px; padding-top: 1px; padding-bottom: 1px;}QListView::indicator { width: %1px; height: %1px; }QListView::indicator:unchecked {image: url(:/materia/command_star_empty);} QListView::indicator:checked{image: url(:/materia/command_star_full);}").arg(QString::number(24*scale));
263  eskill_list->setStyleSheet(style);
264  eskill_list->setMaximumHeight(eskill_list->sizeHintForRow(0)*48 +eskill_list->contentsMargins().top() + eskill_list->contentsMargins().bottom());
265  eskill_list->setSelectionMode(QAbstractItemView::NoSelection);
266  eskill_list->setUniformItemSizes(true);
267 
268  //Fill Combo_type
269  combo_type->addItem(data->iconAllMateria(),tr("All Materia"));
270  combo_type->addItem(data->icon(FF7Materia::MasterMagic),tr("Magic"));
271  combo_type->addItem(data->icon(FF7Materia::MasterSummon),tr("Summon"));
272  combo_type->addItem(data->icon(FF7Materia::Underwater),tr("Independent"));
273  combo_type->addItem(data->icon(FF7Materia::StealAsWell),tr("Support"));
274  combo_type->addItem(data->icon(FF7Materia::MasterCommand),tr("Command"));
275 
276  //Set initial combo_materia info.
277  for(int i=0;i<91;i++)
278  {
279  if(data->name(i) !="DON'T USE"){combo_materia->addItem(data->icon(i),data->name(i));}
280  }
281  _id=0;
282  _current_ap=0;
283  buffer_id=0;
284  buffer_ap=0;
285  editable=true;
286  lbl_materiaIcon->setHidden(editable);
287  lbl_materiaName->setHidden(editable);
288 }
289 
290 void MateriaEditor::setMateria(quint8 materia_id,qint32 materia_ap)
291 {
292  if (materia_id <91)
293  {//valid Materia..
294  if(_id != materia_id)
295  {
296  _id = materia_id;
297  sb_ap->setEnabled(1);
298  emit id_changed(_id);
299  }
300  }
301  else
302  {//Invalid Data Reset Materia.
305  sb_ap->setEnabled(0);
306  sb_ap->setValue(FF7Materia::MaxMateriaAp);
307  _current_ap = FF7Materia::MaxMateriaAp;//set since setAp ingores the 0xFF id.
308  box_status_effects->setHidden(true);
309  box_stats->setHidden(true);
310  }
311  this->setName();
312  this->setAP(materia_ap);
313  this->setStats();
314 
315 
316 }
318 {
319  sb_ap->setMaximum(MaxAP());
320  lbl_max_ap->setText(QString(" %1").arg(QString::number(MaxAP())));
321 
323  {
324  frm_ap_stars->setHidden(true);
325  if(_current_ap != ap){_current_ap = ap; emit(ap_changed(_current_ap));}
327  {//Eskill Materia Specialness.
328  for (int i=0;i<24;i++)
329  {
330  if (_current_ap & (1 << i)){eskill_list->item(i)->setCheckState(Qt::Checked);}
331  else{eskill_list->item(i)->setCheckState(Qt::Unchecked);}
332  }
333  }
334  }
335  else if(_id ==FF7Materia::EmptyId)
336  {
337  frm_ap_stars->setHidden(true);
338  lbl_max_ap->setText("");
339  }
340  else
341  {//All Other Materia
342  frm_ap_stars->setHidden(false);
343  if( (ap <FF7Materia::MaxMateriaAp) && (ap< data->ap(_id,data->levels(_id)-1)) )
344  {
345  _current_ap = ap;
346  sb_ap->setValue(_current_ap);
347  }
348  else
349  {
351  sb_ap->setValue(data->ap(_id,data->levels(_id)-1));
352  }
353  emit ap_changed(_current_ap);
354  }
355  setLevel();
356 }
357 
359 {
360  if(_id==FF7Materia::EmptyId){combo_type->setCurrentIndex(0);combo_materia->setCurrentIndex(-1);lbl_materiaName->clear();lbl_materiaIcon->setPixmap(QPixmap());}
361  else
362  {
363  lbl_materiaIcon->setPixmap(QPixmap::fromImage(data->image(_id)).scaled(lbl_materiaIcon->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
364  lbl_materiaName->setText(data->name(_id));
365  if(combo_type->currentIndex()!=FF7Materia::Unknown){combo_type->setCurrentIndex(data->type(_id));}
366  for(int i=0;i<combo_materia->count();i++)
367  {//loop thru type and see if name matches if so set index and stop
368  if(data->name(_id) == combo_materia->itemText(i)){combo_materia->setCurrentIndex(i);return;}
369  }
370  }
371 }
372 
374 {
375  list_status->clear();
376  lbl_stats->clear();
377  QString title = tr("Skills");
379  {
380  if(data->element(_id)!="")
381  {
382  title.append("-");
383  title.append(data->element(_id));
384  }
385  if(data->statString(_id)!="")
386  {
387  lbl_stats->setText(data->statString(_id));
388  box_stats->setHidden(false);
389  }
390  else{box_stats->setHidden(true);}
391  if(data->status(_id).at(0).toLocal8Bit() !="")
392  {
393  list_status->addItems(data->status(_id));
394  box_status_effects->setFixedWidth(this->width()/3);
395  box_status_effects->setHidden(false);
396  }
397  else{box_status_effects->setHidden(true);}
398  box_skills->setTitle(title);
399  }
400 }
402 {
403  _level=0;
404  if( _id==FF7Materia::EmptyId){/*catch to avoid CID 25848*/ }
406  else{for(int i=0;i<data->levels(_id);i++){if(_current_ap >= data->ap(_id,i)){_level++;}}}
407  setStars();
408  setSkills();
409 }
410 
412 {
413  //Hide if its eskill Materia
415  else
416  {
417  box_stars->setHidden(false);
418  btn_star1->setHidden(true);
419  btn_star2->setHidden(true);
420  btn_star3->setHidden(true);
421  btn_star4->setHidden(true);
422  btn_star5->setHidden(true);
423  if(data->type(_id) !=0)
424  {
425  btn_star1->setIcon(QPixmap::fromImage(data->imageEmptyStar(_id)).scaled(btn_star1->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
426  btn_star2->setIcon(QPixmap::fromImage(data->imageEmptyStar(_id)).scaled(btn_star2->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
427  btn_star3->setIcon(QPixmap::fromImage(data->imageEmptyStar(_id)).scaled(btn_star3->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
428  btn_star4->setIcon(QPixmap::fromImage(data->imageEmptyStar(_id)).scaled(btn_star4->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
429  btn_star5->setIcon(QPixmap::fromImage(data->imageEmptyStar(_id)).scaled(btn_star5->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
430  }
431  switch(_level)
432  {//no break on purpose
433  case 5: btn_star5->setIcon(QPixmap::fromImage(data->imageFullStar(_id)).scaled(btn_star5->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
434  case 4: btn_star4->setIcon(QPixmap::fromImage(data->imageFullStar(_id)).scaled(btn_star4->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
435  case 3: btn_star3->setIcon(QPixmap::fromImage(data->imageFullStar(_id)).scaled(btn_star3->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
436  case 2: btn_star2->setIcon(QPixmap::fromImage(data->imageFullStar(_id)).scaled(btn_star2->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
437  case 1: btn_star1->setIcon(QPixmap::fromImage(data->imageFullStar(_id)).scaled(btn_star1->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
438  };
439  switch(data->levels(_id))
440  {//no break on purpose.
441  case 5: btn_star5->setHidden(false);
442  case 4: btn_star4->setHidden(false);
443  case 3: btn_star3->setHidden(false);
444  case 2: btn_star2->setHidden(false);
445  case 1: btn_star1->setHidden(false);
446  };
447  }
448 }
449 
451 {
452  list_skills->clear();
454  {
455  box_skills->setHidden(false);
456  list_skills->setHidden(true);
457  eskill_group->setHidden(false);
458  frm_skill_status->adjustSize();
459  v_spacer->changeSize(0,0,QSizePolicy::Fixed,QSizePolicy::Fixed);
460  v_spacer->invalidate();
461  }
462  else if(_id ==FF7Materia::EmptyId)
463  {
464  box_skills->setHidden(true);
465  list_skills->setHidden(true);
466  eskill_group->setHidden(true);
467  v_spacer->changeSize(0,0,QSizePolicy::Preferred,QSizePolicy::Expanding);
468  v_spacer->invalidate();
469  }
470  else
471  {
472  box_skills->setHidden(false);
473  list_skills->setHidden(false);
474  eskill_group->setHidden(true);
475  v_spacer->changeSize(0,0,QSizePolicy::Preferred,QSizePolicy::Expanding);
476  v_spacer->invalidate();
477  switch (_level)
478  {// no breaks on purpose
479  case 5:if(data->skills(_id).count()>4){list_skills->insertItem(0,data->skills(_id).at(4));}
480  case 4:if(data->skills(_id).count()>3){list_skills->insertItem(0,data->skills(_id).at(3));}
481  case 3:if(data->skills(_id).count()>2){list_skills->insertItem(0,data->skills(_id).at(2));}
482  case 2:if(data->skills(_id).count()>1){list_skills->insertItem(0,data->skills(_id).at(1));}
483  case 1:if(data->skills(_id).count()>0){list_skills->insertItem(0,data->skills(_id).at(0));}
484  }
485  //frm_skill_status->adjustSize();
486  }
487  this->layout()->update();
488 }
489 
495 
496 void MateriaEditor::materia_changed(QString new_name)
497 {
498  for(int i=0;i<91;i++)
499  {
500  if(data->name(i)==new_name){if(_id != i){setMateria(i,_current_ap);}return;}
501  }
502 }
503 
504 void MateriaEditor::type_changed(int new_type)
505 {
506  combo_materia->clear();
507  combo_materia->blockSignals(1);
508  if(new_type ==0)for(int i=0;i<91;i++){if(data->name(i) !="DON'T USE"){combo_materia->addItem(data->icon(i),data->name(i));}}
509  else{for(int i=0;i<91;i++){if(data->type(i) == new_type){combo_materia->addItem(data->icon(i),data->name(i));}}}
510  //look for the current id in the new list if found set it other wise set index -1
511  if(_id !=FF7Materia::EmptyId){combo_materia->setCurrentIndex(combo_materia->findText(data->name(_id)));}
512 
513  else{combo_materia->setCurrentIndex(-1);}
514  combo_materia->blockSignals(0);
515 }
516 
517 qint32 MateriaEditor::ap(void){return _current_ap;}
518 qint8 MateriaEditor::id(void){return _id;}
520 
521 void MateriaEditor::eskill_list_clicked(QModelIndex index)
522 {
523  int i = index.row();
524  if (eskill_list->item(i)->checkState() == Qt::Checked){_current_ap |= (1<<i);}
525  else{_current_ap &= ~(1<<i);}
526  emit(ap_changed(_current_ap));
527 }
529 {
531  {
533  }
534  else{return data->ap(_id,data->levels(_id)-1);}
535 }
536 
542 
544 {
545 
546  btn_star1->setFixedSize(size,size);
547  btn_star2->setFixedSize(size,size);
548  btn_star3->setFixedSize(size,size);
549  btn_star4->setFixedSize(size,size);
550  btn_star5->setFixedSize(size,size);
551  btn_star1->setIconSize(QSize(size,size));
552  btn_star2->setIconSize(QSize(size,size));
553  btn_star3->setIconSize(QSize(size,size));
554  btn_star4->setIconSize(QSize(size,size));
555  btn_star5->setIconSize(QSize(size,size));
556  box_stars->setFixedHeight(size +(size/8));
557  setStars();
558  box_stars->adjustSize();
559 
560  frm_ap_stars->layout()->removeWidget(box_stars);
561  frm_ap_stars->layout()->removeWidget(frm_ap);
562 
563  if(size<=32*scale)
564  {
565  ap_stars_layout->addWidget(box_stars,0,0,1,1,0);
566  ap_stars_layout->addWidget(frm_ap,0,1,1,1,0);
567  if(box_stars->sizeHint().height() < frm_ap->sizeHint().height())
568  {
569  frm_ap_stars->setFixedHeight(frm_ap->sizeHint().height()+6);
570  }
571  else{frm_ap_stars->setFixedHeight(box_stars->sizeHint().height()+6);}
572  }
573  else
574  {
575  ap_stars_layout->addWidget(frm_ap,0,0,1,1,0);
576  ap_stars_layout->addWidget(box_stars,1,0,1,1,0);
577  frm_ap_stars->setFixedHeight( (size +(size/6)) + (frm_ap->sizeHint().height()+6) );
578  }
579  frm_ap_stars->adjustSize();
580 }
583 {
584  editable = edit;
585  editMode();
586 }
588 {
589  //Set blockSignals = !editable.
590  btn_star1->blockSignals(!editable);
591  btn_star2->blockSignals(!editable);
592  btn_star3->blockSignals(!editable);
593  btn_star4->blockSignals(!editable);
594  btn_star5->blockSignals(!editable);
595  //Set Enabled = editable
596  if(_id != FF7Materia::EmptyId){sb_ap->setEnabled(editable);}
597  btn_paste_materia->setHidden(!editable);
598  btn_rm_materia->setHidden(!editable);
599  combo_materia->setHidden(!editable);
600  combo_type->setHidden(!editable);
601  //show the materia Icon and Name if not hidden.
602  lbl_materiaIcon->setHidden(editable);
603  lbl_materiaName->setHidden(editable);
604  btn_master_eskills->setHidden(!editable);
605  btn_clear_eskills->setHidden(!editable);
606  if(editable)
607  {
608  for(int i=0;i<eskill_list->count();i++)
609  {
610  eskill_list->item(i)->setFlags(eskill_list->item(i)->flags() |= Qt::ItemIsUserCheckable);
611  }
612  }
613  else
614  {
615  for(int i=0;i<eskill_list->count();i++)
616  {
617  eskill_list->item(i)->setFlags(eskill_list->item(i)->flags() &=~Qt::ItemIsUserCheckable);
618  }
619  }
620 
621 }
622 void MateriaEditor::setHoverStyle(QString hoverColor)
623 {
624  QString style=QString("QPushButton:enabled{background-color: rgba(0,0,0,0);border:0px solid;} QPushButton:hover{background-color:%1}").arg(hoverColor);
625  btn_rm_materia->setStyleSheet(style);
626  btn_copy_materia->setStyleSheet(style);
627  btn_paste_materia->setStyleSheet(style);
628  btn_star1->setStyleSheet(style);
629  btn_star2->setStyleSheet(style);
630  btn_star3->setStyleSheet(style);
631  btn_star4->setStyleSheet(style);
632  btn_star5->setStyleSheet(style);
633 }
635 {
636  combo_materia->setEditable(enabled);
637  combo_materia->setInsertPolicy(QComboBox::NoInsert);
638 }
QFrame * box_stars
Definition: MateriaEditor.h:77
QLabel * lbl_materiaName
Definition: MateriaEditor.h:99
QLabel * lbl_materiaIcon
Definition: MateriaEditor.h:98
QImage imageEmptyStar(int id)
Definition: FF7Materia.cpp:41
QPushButton * btn_master_eskills
Definition: MateriaEditor.h:82
QGroupBox * box_status_effects
Definition: MateriaEditor.h:85
QListWidget * list_status
Definition: MateriaEditor.h:87
QLabel * lbl_slash
Definition: MateriaEditor.h:61
void setStarsSize(int)
QString statString(int id)
Definition: FF7Materia.cpp:26
QLabel * lbl_stats
Definition: MateriaEditor.h:86
QPushButton * btn_copy_materia
Definition: MateriaEditor.h:66
QStringList skills(int id)
Definition: FF7Materia.cpp:47
QPushButton * btn_star3
Definition: MateriaEditor.h:74
QIcon icon(int id)
Definition: FF7Materia.cpp:38
QFrame * frm_ap
Definition: MateriaEditor.h:70
qint32 MaxAP(void)
QLabel * lbl_max_ap
Definition: MateriaEditor.h:60
QString name(int id)
Definition: FF7Materia.cpp:25
void setStats(void)
QImage image(int id)
Definition: FF7Materia.cpp:40
QIcon iconAllMateria()
Definition: FF7Materia.cpp:43
QGroupBox * eskill_group
Definition: MateriaEditor.h:79
void btn_star5_clicked()
QFrame * frm_skill_status
Definition: MateriaEditor.h:71
QComboBox * combo_type
Definition: MateriaEditor.h:63
QPushButton * btn_star1
Definition: MateriaEditor.h:72
void copy_materia(void)
void sb_ap_changed(int)
QString enemySkill(int i)
Definition: FF7Materia.cpp:45
void btn_star2_clicked()
QFrame * frm_ap_stars
Definition: MateriaEditor.h:90
bool isEditable(void)
void materia_changed(QString new_name)
qint32 buffer_ap
Definition: MateriaEditor.h:95
void type_changed(int new_type)
void setStars(void)
void setHoverStyle(QString hoverColor)
void init_display(void)
QPushButton * btn_clear_eskills
Definition: MateriaEditor.h:81
QGroupBox * box_skills
Definition: MateriaEditor.h:78
void btn_star3_clicked()
void id_changed(qint8)
quint8 type(int id)
Definition: FF7Materia.cpp:36
QImage imageFullStar(int id)
Definition: FF7Materia.cpp:42
QPushButton * btn_star2
Definition: MateriaEditor.h:73
void editMode(void)
QString element(int i)
Definition: FF7Materia.cpp:46
void paste_materia(void)
QGridLayout * ap_stars_layout
Definition: MateriaEditor.h:91
qint32 ap(void)
void setEditable(bool)
QStringList status(int i)
Definition: FF7Materia.cpp:56
qint32 ap(int id, int lvl)
Definition: FF7Materia.cpp:37
qint8 levels(int id)
Definition: FF7Materia.cpp:35
void setMateria(quint8 materia_id=0, qint32 materia_ap=0)
void setSkills(void)
QSpacerItem * v_spacer
Definition: MateriaEditor.h:89
QPushButton * btn_paste_materia
Definition: MateriaEditor.h:67
QListWidget * eskill_list
Definition: MateriaEditor.h:80
void setAP(qint32 current_ap=0)
QGroupBox * box_stats
Definition: MateriaEditor.h:84
FF7Materia * data
Definition: MateriaEditor.h:88
QPushButton * btn_star4
Definition: MateriaEditor.h:75
QPushButton * btn_star5
Definition: MateriaEditor.h:76
void btn_star1_clicked()
void setLevel(void)
qint8 id(void)
void init_data(void)
void btn_star4_clicked()
qint32 _current_ap
Definition: MateriaEditor.h:97
QSpinBox * sb_ap
Definition: MateriaEditor.h:68
void init_connections(void)
void btn_clear_eskill_clicked()
QHBoxLayout * Final
Definition: MateriaEditor.h:62
void ap_changed(qint32)
void setName(void)
QPushButton * btn_rm_materia
Definition: MateriaEditor.h:65
QComboBox * combo_materia
Definition: MateriaEditor.h:64
QFrame * frm_name_type
Definition: MateriaEditor.h:69
QListWidget * list_skills
Definition: MateriaEditor.h:83
MateriaEditor(qreal Scale=1, QWidget *parent=0)
void remove_materia(void)
void setEditableMateriaCombo(bool enabled)
void eskill_list_clicked(QModelIndex)
void btn_master_eskill_clicked()