PIVX Core  5.6.99
P2P Digital Currency
snackbar.cpp
Go to the documentation of this file.
1 // Copyright (c) 2019-2020 The PIVX Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include "snackbar.h"
6 #include "ui_snackbar.h"
7 
8 #include "qtutils.h"
9 
10 #include <QTimer>
11 
12 
13 SnackBar::SnackBar(PIVXGUI* _window, QWidget *parent) :
14  QDialog(parent),
15  ui(new Ui::SnackBar),
16  window(_window),
17  timeout(MIN_TIMEOUT)
18 {
19  ui->setupUi(this);
20 
21  this->setStyleSheet(parent->styleSheet());
22  ui->snackContainer->setProperty("cssClass", "container-snackbar");
23  ui->label->setProperty("cssClass", "text-snackbar");
24  ui->pushButton->setProperty("cssClass", "ic-close");
25 
26  connect(ui->pushButton, &QPushButton::clicked, this, &SnackBar::close);
27  if (window)
29  else {
30  ui->horizontalLayout->setContentsMargins(0,0,0,0);
31  ui->label->setStyleSheet("font-size: 15px; color:white;");
32  }
33 }
34 
35 void SnackBar::windowResizeEvent(QResizeEvent* event) {
36  this->resize(qobject_cast<QWidget*>(parent())->width(), this->height());
37  this->move(QPoint(0, window->height() - this->height() ));
38 }
39 
40 void SnackBar::showEvent(QShowEvent *event)
41 {
42  QTimer::singleShot(timeout, this, &SnackBar::hideAnim);
43 }
44 
46 {
47  if (window) closeDialog(this, window);
48  QTimer::singleShot(310, this, &SnackBar::hide);
49 }
50 
51 void SnackBar::setText(const QString& text)
52 {
53  ui->label->setText(text);
54  setTimeoutForText(text);
55 }
56 
57 void SnackBar::setTimeoutForText(const QString& text)
58 {
59  timeout = std::max(MIN_TIMEOUT, std::min(MAX_TIMEOUT, GetTimeout(text)));
60 }
61 
62 int SnackBar::GetTimeout(const QString& message)
63 {
64  // 50 milliseconds per char
65  return (50 * message.length());
66 }
67 
69 {
70  delete ui;
71 }
72 
73 const int SnackBar::MIN_TIMEOUT;
74 const int SnackBar::MAX_TIMEOUT;
PIVX GUI main class.
Definition: pivxgui.h:46
void windowResizeEvent(QResizeEvent *event)
virtual void showEvent(QShowEvent *event) override
Definition: snackbar.cpp:40
void hideAnim()
Definition: snackbar.cpp:45
void windowResizeEvent(QResizeEvent *event)
Definition: snackbar.cpp:35
void setText(const QString &text)
Definition: snackbar.cpp:51
void setTimeoutForText(const QString &text)
Definition: snackbar.cpp:57
Ui::SnackBar * ui
Definition: snackbar.h:32
static const int MAX_TIMEOUT
Definition: snackbar.h:37
PIVXGUI * window
Definition: snackbar.h:33
int timeout
Definition: snackbar.h:34
~SnackBar()
Definition: snackbar.cpp:68
static int GetTimeout(const QString &message)
Definition: snackbar.cpp:62
SnackBar(PIVXGUI *_window=nullptr, QWidget *parent=nullptr)
Definition: snackbar.cpp:13
static const int MIN_TIMEOUT
Definition: snackbar.h:36
void closeDialog(QDialog *widget, PIVXGUI *gui)
Definition: qtutils.cpp:38