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