ff7tk  0.02
Toolkit for making FF7 Tools
ChocoboLabel.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // copyright 2013 -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 "ChocoboLabel.h"
17 // Pull in Icons, Be Sure Paths Are Correct
18 
19 bool ChocoboLabel::event(QEvent *ev)
20 {
21  if (ev->type()==QEvent::MouseButtonPress && isEnabled){emit(clicked());return true;}
22  else{return false;}
23 }
24 ChocoboLabel::ChocoboLabel(qreal Scale,QString titleText,bool occupied,QWidget *parent) :
25  QWidget(parent)
26 {
27  scale = Scale;
28  lblType = new QLabel("");
29  lblType->setFixedSize(48*scale,48*scale);
30 
31  lblName = new QLabel("");
32  lblSex = new QLabel("");
33  lblRank = new QLabel("");
34 
35  chkOccupied = new QCheckBox();
36  chkOccupied->setText(titleText);
37  chkOccupied->setMaximumHeight(20*scale);
38  chkOccupied->setProperty("HoverStyled",QVariant(true));
39 
40  btnCopy = new QPushButton();
41  btnCopy->setFlat(true);
42  btnCopy->setFixedSize(20*scale,20*scale);
43  btnCopy->setIconSize(QSize(16*scale,16*scale));
44  btnCopy->setToolTip(QString(tr("Copy")));
45  btnCopy->setProperty("HoverStyled",QVariant(true));
46  btnCopy->setIcon(QIcon::fromTheme(QString("edit-copy"),QPixmap(":/common/edit-copy")));
47 
48  btnPaste = new QPushButton();
49  btnPaste->setFlat(true);
50  btnPaste->setFixedSize(20*scale,20*scale);
51  btnPaste->setIconSize(QSize(16*scale,16*scale));
52  btnPaste->setToolTip(QString(tr("Paste")));
53  btnPaste->setProperty("HoverStyled",QVariant(true));
54  btnPaste->setIcon(QIcon::fromTheme(QString("edit-paste"),QPixmap(":/common/edit-paste")));
55 
56  btnRemove = new QPushButton();
57  btnRemove->setFlat(true);
58  btnRemove->setFixedSize(20*scale,20*scale);
59  btnRemove->setIconSize(QSize(16*scale,16*scale));
60  btnRemove->setToolTip(QString(tr("Remove")));
61  btnRemove->setProperty("HoverStyled",QVariant(true));
62  btnRemove->setIcon(QIcon::fromTheme(QString("edit-clear"),QPixmap(":/common/edit-clear")));
63 
64  setFontSize(14);
65  chkOccupied->setChecked(occupied);
66 
67  QHBoxLayout *btnLayout = new QHBoxLayout;
68  btnLayout->setContentsMargins(0,0,0,0);
69  btnLayout->addWidget(chkOccupied);
70  btnLayout->addWidget(btnCopy);
71  btnLayout->addWidget(btnPaste);
72  btnLayout->addWidget(btnRemove);
73  btnLayout->setSpacing(1);
74 
75  QHBoxLayout *LeftTopLayout = new QHBoxLayout;
76  LeftTopLayout->setContentsMargins(0,0,0,0);
77  LeftTopLayout->addWidget(lblName);
78  LeftTopLayout->addWidget(lblSex);
79  LeftTopLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Preferred));
80  LeftTopLayout->setSpacing(1);
81 
82  QHBoxLayout *RightTopLayout = new QHBoxLayout;
83  RightTopLayout->setContentsMargins(0,0,0,0);
84  RightTopLayout->addWidget(lblRank);
85  RightTopLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Preferred));
86  RightTopLayout->setSpacing(1);
87 
88  QVBoxLayout *rightSideLayout = new QVBoxLayout;
89  rightSideLayout->setContentsMargins(0,0,0,0);
90  rightSideLayout->addLayout(LeftTopLayout);
91  rightSideLayout->addLayout(RightTopLayout);
92 
93  QHBoxLayout *innerFrameLayout = new QHBoxLayout;
94  innerFrameLayout->addWidget(lblType);
95  innerFrameLayout->addLayout(rightSideLayout);
96 
97  innerFrame = new QFrame;
98  innerFrame->setLayout(innerFrameLayout);
99  innerFrame->setProperty("HoverStyled",QVariant(true));
100 
101  QVBoxLayout *outerFrameLayout = new QVBoxLayout;
102  outerFrameLayout->setContentsMargins(3,3,3,3);
103  outerFrameLayout->addLayout(btnLayout);
104  outerFrameLayout->addWidget(innerFrame);
105 
106  outerFrame = new QFrame;
107  outerFrame->setLayout(outerFrameLayout);
108 
109  QVBoxLayout *finalLayout= new QVBoxLayout;
110  finalLayout->setContentsMargins(0,0,0,0);
111  finalLayout->addWidget(outerFrame);
112 
113  this->setLayout(finalLayout);
114  this->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
115  enable(occupied);
116  connect(chkOccupied,SIGNAL(toggled(bool)),this,SLOT(chkOccupiedToggled(bool)));
117  connect(btnCopy,SIGNAL(clicked()),this,SLOT(copyPushed()));
118  connect(btnPaste,SIGNAL(clicked()),this,SLOT(pastePushed()));
119  connect(btnRemove,SIGNAL(clicked()),this,SLOT(removePushed()));
120 }
121 
122 void ChocoboLabel::setType(int type)
123 {
124  switch(type)
125  {
126  case 0: lblType->setPixmap(QPixmap("://chocobo/yellow").scaled(lblType->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); break;
127  case 1: lblType->setPixmap(QPixmap("://chocobo/green").scaled(lblType->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); break;
128  case 2: lblType->setPixmap(QPixmap("://chocobo/blue").scaled(lblType->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); break;
129  case 3: lblType->setPixmap(QPixmap("://chocobo/black").scaled(lblType->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); break;
130  case 4: lblType->setPixmap(QPixmap("://chocobo/gold").scaled(lblType->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); break;
131  default: lblType->setPixmap(QPixmap("")); break;
132  }
133 }
134 
135 void ChocoboLabel::setTitle(QString title){chkOccupied->setText(title);}
136 
137 void ChocoboLabel::setName(QString decodedName){lblName->setText(decodedName.mid(0,6));/*only space for 6 chars*/}
138 
139 void ChocoboLabel::setSex(bool male)
140 {
141  if(male){lblSex->setText(QString::fromUtf8("♂"));}
142  else{lblSex->setText(QString::fromUtf8("♀"));}
143 }
144 
145 void ChocoboLabel::setSex(int sex)
146 {
147  if (sex==0){lblSex->setText(QString::fromUtf8("♂"));}
148  else if(sex==1){lblSex->setText(QString::fromUtf8("♀"));}
149  else{lblSex->setText("");}
150 }
151 
152 void ChocoboLabel::setRank(int wins)
153 {
154  if(wins<0){lblRank->setText("");}
155  else if(wins<3){lblRank->setText(tr("Rank:C"));}
156  else if(wins<6){lblRank->setText(tr("Rank:B"));}
157  else if(wins<9){lblRank->setText(tr("Rank:A"));}
158  else{lblRank->setText(tr("Rank:S"));}
159 }
160 
161 void ChocoboLabel::setOccupied(bool occupied)
162 {
163  chkOccupied->blockSignals(true);
164  chkOccupied->setChecked(occupied);
165  chkOccupied->blockSignals(false);
166  enable(occupied);
167 }
168 
170 {
171  emit occupiedToggled(occupied);
172  enable(occupied);
173 }
174 
175 void ChocoboLabel::copyPushed(void){emit copy();}
176 
177 void ChocoboLabel::pastePushed(void){emit paste();}
178 
180 {
181  emit remove();
182  clearLabel();
183  chkOccupied->setChecked(false);
184 }
185 
187 {
188  setType(-1);
189  setRank(-1);
190  setName("");
191  setSex(-1);
192 }
193 
194 void ChocoboLabel::setFontSize(int fontSize)
195 {
196  QString fontStyle =QString("font-size:%1pt;background-color:rgba(0,0,0,0);").arg(fontSize);
197  lblName->setStyleSheet(fontStyle);
198  lblSex->setStyleSheet(fontStyle);
199  lblRank->setStyleSheet(fontStyle);
200  lblType->setStyleSheet(fontStyle);
201 }
202 
203 void ChocoboLabel::enable(bool enabled)
204 {
205  isEnabled=enabled;
206  innerFrame->setEnabled(enabled);
207  if(!enabled){setSelected(false);}
208 }
209 
210 void ChocoboLabel::setSelected(bool selected)
211 {
212  if(selected){outerFrame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);innerFrame->setStyleSheet(SelectedBkStyle);}
213  else
214  {
215  outerFrame->setFrameStyle(QFrame::NoFrame);
216  QString Style=SelectedBkStyle;
217  Style.append(Style.insert(Style.lastIndexOf("]")+1,":enabled:hover"));
218  Style.prepend("QWidget[HoverStyled=\"true\"]{background-color:rgba(0,0,0,0);}");
219  innerFrame->setStyleSheet(Style);
220  }
221 }
222 
223 bool ChocoboLabel::isOccupied(void){return chkOccupied->isChecked();}
224 
225 void ChocoboLabel::setCheckBoxStyle(QString styleSheet){chkOccupied->setStyleSheet(styleSheet);}
226 
227 void ChocoboLabel::setHoverColorStyle(QString backgroundColor)
228 {
229  SelectedBkStyle=backgroundColor;
230  SelectedBkStyle.prepend("QWidget[HoverStyled=\"true\"]{background-color:");
231  SelectedBkStyle.append("}");
232 
233  backgroundColor.prepend("QPushButton:enabled{background-color:rgba(0,0,0,0);border:0px solid;} QWidget[HoverStyled=\"true\"]:enabled:hover{background-color:");
234  backgroundColor.append("}");
235  this->setStyleSheet(backgroundColor);
236 }
void copyPushed(void)
copy has been pressed
void setName(QString decodedName)
Set string to be shown as chocobo&#39;s name.
QLabel * lblType
isEnabled hold if enabled
Definition: ChocoboLabel.h:75
ChocoboLabel(qreal Scale=1, QString titleText="", bool occupied=false, QWidget *parent=0)
Create a new Chocobo label.
QFrame * outerFrame
outer frame of widget contains the label checkbox, copy,paste,remove buttons
Definition: ChocoboLabel.h:80
void pastePushed(void)
paste has been pressed
void setSelected(bool selected)
Change if the label looks selected.
QFrame * innerFrame
inner frame of widget contains all the chocobo into
Definition: ChocoboLabel.h:79
void enable(bool enabled)
enable/disable inner part of the form when needed
void setTitle(QString title)
The occupied checkbox has been toggled.
void setType(int type)
Set the type of chocobo shown on the label.
bool isOccupied(void)
occupied state
void setRank(int wins)
Show the racing rank of the chocobo.
QString SelectedBkStyle
style for background when selected
Definition: ChocoboLabel.h:81
void clicked()
Emit Signal: the widget has been clicked.
void paste()
Emit Signal: the paste button pressed.
QPushButton * btnRemove
remove button
Definition: ChocoboLabel.h:73
void copy()
Emit Signal: the copy button pressed.
void removePushed(void)
remove has been pressed
QLabel * lblRank
label to show rank
Definition: ChocoboLabel.h:77
void setOccupied(bool occupied)
Set if the stall is occupied.
bool event(QEvent *ev)
bool isEnabled
isEnabled hold if enabled
Definition: ChocoboLabel.h:70
void occupiedToggled(bool occupied)
the occupied checkbox has been toggled
QCheckBox * chkOccupied
checkbox to show if occupied
Definition: ChocoboLabel.h:74
QLabel * lblName
label to show name
Definition: ChocoboLabel.h:76
void setFontSize(int fontSize)
Set the size of the labels font.
void chkOccupiedToggled(bool occupied)
occupied clicked
void setCheckBoxStyle(QString styleSheet)
style the checkboxes of this widget easily.
QLabel * lblSex
label to show sex
Definition: ChocoboLabel.h:78
void setSex(bool Male)
Set the sex of the chocobo.
QPushButton * btnPaste
paste button
Definition: ChocoboLabel.h:72
void setHoverColorStyle(QString backgroundColor)
Set the style for when you hover.
QPushButton * btnCopy
copy button
Definition: ChocoboLabel.h:71
void clearLabel(void)
Clear the labels data.