benoitrigolleau@108
|
1 #include <QWidget>
|
benoitrigolleau@108
|
2 #include <QVBoxLayout>
|
benoitrigolleau@108
|
3 #include <QFrame>
|
benoitrigolleau@108
|
4 #include <QVector>
|
benoitrigolleau@108
|
5 #include <QString>
|
benoitrigolleau@108
|
6
|
benoitrigolleau@108
|
7 #include "CriteriaDialog.h"
|
benoitrigolleau@108
|
8
|
benoitrigolleau@108
|
9 CriteriaDialog::CriteriaDialog(QWidget *parent)
|
benoitrigolleau@108
|
10 : QDialog(parent)
|
benoitrigolleau@108
|
11 {
|
benoitrigolleau@108
|
12 this->setWindowFlags(Qt::ToolTip);
|
benoitrigolleau@108
|
13
|
benoitrigolleau@108
|
14 m_labelTitle = new QLabel(tr("Select criterias:"));
|
benoitrigolleau@108
|
15
|
benoitrigolleau@108
|
16 m_buttonBox = new QDialogButtonBox(Qt::Horizontal);
|
benoitrigolleau@108
|
17 m_buttonOK = new QPushButton(tr("Ok"));
|
benoitrigolleau@108
|
18 m_buttonCancel = new QPushButton(tr("Cancel"));
|
benoitrigolleau@108
|
19 m_layoutForCheckBoxs = new QVBoxLayout();
|
benoitrigolleau@108
|
20 QFrame *auxFrame = new QFrame();
|
benoitrigolleau@108
|
21 QVBoxLayout *mainLayout = new QVBoxLayout;
|
benoitrigolleau@108
|
22 QVBoxLayout *auxLayout = new QVBoxLayout;
|
benoitrigolleau@108
|
23 QFrame *frameForCheckBoxs = new QFrame();
|
benoitrigolleau@108
|
24
|
benoitrigolleau@108
|
25 frameForCheckBoxs->setLayout(m_layoutForCheckBoxs);
|
benoitrigolleau@108
|
26
|
benoitrigolleau@108
|
27 m_labelTitle->setAlignment(Qt::AlignCenter);
|
benoitrigolleau@108
|
28
|
benoitrigolleau@108
|
29 // default button for enter key
|
benoitrigolleau@108
|
30 m_buttonOK->setDefault(true);
|
benoitrigolleau@108
|
31
|
benoitrigolleau@108
|
32 m_buttonBox->addButton(m_buttonOK, QDialogButtonBox::AcceptRole);
|
benoitrigolleau@108
|
33 m_buttonBox->addButton(m_buttonCancel, QDialogButtonBox::RejectRole);
|
benoitrigolleau@108
|
34
|
benoitrigolleau@108
|
35 connect(m_buttonOK, SIGNAL(clicked()), this, SLOT(accept()));
|
benoitrigolleau@108
|
36 connect(m_buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
|
benoitrigolleau@108
|
37
|
benoitrigolleau@108
|
38 auxLayout->addWidget(m_labelTitle);
|
benoitrigolleau@108
|
39 auxLayout->addWidget(frameForCheckBoxs);
|
benoitrigolleau@108
|
40 auxLayout->addWidget(m_buttonBox);
|
benoitrigolleau@108
|
41 auxLayout->setSizeConstraint(QLayout::SetFixedSize);
|
benoitrigolleau@108
|
42
|
benoitrigolleau@108
|
43 auxFrame->setLayout(auxLayout);
|
benoitrigolleau@108
|
44 auxFrame->setFrameStyle(QFrame::Panel | QFrame::Plain);
|
benoitrigolleau@108
|
45
|
benoitrigolleau@108
|
46 mainLayout->addWidget(auxFrame);
|
benoitrigolleau@108
|
47 mainLayout->setMargin(0);
|
benoitrigolleau@108
|
48 mainLayout->setSpacing(0);
|
benoitrigolleau@108
|
49 mainLayout->setSizeConstraint(QLayout::SetFixedSize);
|
benoitrigolleau@108
|
50
|
benoitrigolleau@108
|
51 setLayout(mainLayout);
|
benoitrigolleau@108
|
52
|
benoitrigolleau@108
|
53 }
|
benoitrigolleau@108
|
54
|
benoitrigolleau@108
|
55 void CriteriaDialog::setLocation(int x, int y){
|
benoitrigolleau@108
|
56 this->setGeometry(x,y,this->width(),this->height());
|
benoitrigolleau@108
|
57 }
|
benoitrigolleau@108
|
58
|
benoitrigolleau@108
|
59 void CriteriaDialog::setOpacity(qreal value){
|
benoitrigolleau@108
|
60 this->setWindowOpacity(value);
|
benoitrigolleau@108
|
61 }
|
benoitrigolleau@108
|
62
|
benoitrigolleau@108
|
63
|
benoitrigolleau@108
|
64 void CriteriaDialog::addCriteria(QString name){
|
benoitrigolleau@108
|
65 QCheckBox *criteriaCheckBox = new QCheckBox(name);
|
benoitrigolleau@108
|
66 m_layoutForCheckBoxs->addWidget(criteriaCheckBox);
|
benoitrigolleau@108
|
67 }
|
benoitrigolleau@108
|
68
|
benoitrigolleau@108
|
69 QVector<QString> CriteriaDialog::result(){
|
benoitrigolleau@108
|
70 QVector<QString> result;
|
benoitrigolleau@108
|
71 for(int i=0;i<m_layoutForCheckBoxs->count();i++){
|
benoitrigolleau@108
|
72 QCheckBox *criteriaCheckBox = (QCheckBox*) m_layoutForCheckBoxs->itemAt(i)->widget();
|
benoitrigolleau@108
|
73 if(criteriaCheckBox->isChecked()){
|
benoitrigolleau@108
|
74 result.append(criteriaCheckBox->text());
|
benoitrigolleau@108
|
75 }
|
benoitrigolleau@108
|
76 }
|
benoitrigolleau@108
|
77 return result;
|
benoitrigolleau@108
|
78 } |