PRCYCoin  2.0.0.7rc1
P2P Digital Currency
togglebutton.cpp
Go to the documentation of this file.
1 // Copyright (c) 2011-2014 The Bitcoin developers
2 // Copyright (c) 2014-2015 The Dash developers
3 // Copyright (c) 2015-2018 The PIVX developers
4 // Copyright (c) 2018-2020 The DAPS Project developers
5 // Distributed under the MIT/X11 software license, see the accompanying
6 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
7 
8 #include "togglebutton.h"
9 #include "ui_togglebutton.h"
10 
11 
12 #include <QApplication>
13 #include <QPainter>
14 #include <QStyle>
15 #include <QStyleOption>
16 
17 ToggleButton::ToggleButton(QWidget* parent) : QWidget(parent),
18  ui(new Ui::ToggleButton)
19 {
20  ui->setupUi(this);
21  ui->pushButton0->setCheckable(true);
22  ui->pushButton1->setCheckable(true);
23  connect(ui->pushButton0, SIGNAL(clicked()), this, SLOT(toggle()));
24  connect(ui->pushButton1, SIGNAL(clicked()), this, SLOT(toggle()));
25  state = false;
26 
27  update();
28 }
29 
31 {
32  delete ui;
33 }
34 
35 void ToggleButton::setOptionA(QString label)
36 { ui->pushButton1->setText(label); }
37 
38 void ToggleButton::setOptionB(QString label)
39 { ui->pushButton0->setText(label); }
40 
41 void ToggleButton::setLayoutDirection(Qt::LayoutDirection Dir)
42  { direction=Dir; QWidget::setLayoutDirection(Dir); }
43 
45 { return state; }
46 
47 void ToggleButton::setState(bool value)
48 { state = value; update(); }
49 
50  void ToggleButton::paintEvent(QPaintEvent *e)
51  {
52  QStyleOption opt;
53  opt.init(this);
54  QPainter p(this);
55  if (direction!=Qt::RightToLeft)
56  ui->pushButton1->move(this->width()-ui->pushButton1->width() -ui->pushButton0->x(),ui->pushButton1->y());
57  else if (state)
58  ui->pushButton0->move(this->width()-ui->pushButton0->width()- ui->pushButton1->x(),ui->pushButton0->y());
59  style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
60  }
61 
62  void ToggleButton::resizeEvent(QResizeEvent * event)
63  { resize(); }
64 
66  {
67  this->setFixedWidth(this->width());
68  double large = this->width()*.55;
69  double small = this->width()*.4;
70  if (state)
71  {
72  ui->pushButton0->setFixedWidth(large);
73  ui->pushButton1->setFixedWidth(small);
74  } else {
75  ui->pushButton0->setFixedWidth(small);
76  ui->pushButton1->setFixedWidth(large);
77  }
78  }
79 
81  {
82  ui->pushButton0->setChecked(!state);
83  ui->pushButton1->setChecked(state);
84 
85  if (state)
86  ui->pushButton0->stackUnder(ui->pushButton1);
87  else
88  ui->pushButton1->stackUnder(ui->pushButton0);
89  resize();
90  this->repaint();
91  }
92 
94 {
95  state=!state;
96  Q_EMIT stateChanged(this);
97  update();
98 }
99 
ToggleButton::setOptionA
void setOptionA(QString label)
Definition: togglebutton.cpp:35
ToggleButton::setOptionB
void setOptionB(QString label)
Definition: togglebutton.cpp:38
ToggleButton::paintEvent
void paintEvent(QPaintEvent *)
Definition: togglebutton.cpp:50
ToggleButton::resizeEvent
void resizeEvent(QResizeEvent *event)
Definition: togglebutton.cpp:62
ToggleButton::ui
Ui::ToggleButton * ui
Definition: togglebutton.h:41
ToggleButton::ToggleButton
ToggleButton(QWidget *parent=0)
Definition: togglebutton.cpp:17
ToggleButton::setState
void setState(bool value)
Definition: togglebutton.cpp:47
ToggleButton::~ToggleButton
~ToggleButton()
Definition: togglebutton.cpp:30
ToggleButton::update
void update()
Definition: togglebutton.cpp:80
ToggleButton
Definition: togglebutton.h:16
ToggleButton::resize
void resize()
Definition: togglebutton.cpp:65
Ui
Definition: 2faconfirmdialog.h:7
ToggleButton::toggle
void toggle()
Definition: togglebutton.cpp:93
ToggleButton::direction
Qt::LayoutDirection direction
Definition: togglebutton.h:42
ToggleButton::stateChanged
void stateChanged(ToggleButton *widget)
ToggleButton::state
bool state
Definition: togglebutton.h:43
ToggleButton::setLayoutDirection
void setLayoutDirection(Qt::LayoutDirection Dir)
Definition: togglebutton.cpp:41
togglebutton.h
ToggleButton::getState
bool getState()
Definition: togglebutton.cpp:44