/ src / qt / openuridialog.cpp
openuridialog.cpp
 1  // Copyright (c) 2011-present The Bitcoin 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 <qt/openuridialog.h>
 6  #include <qt/forms/ui_openuridialog.h>
 7  
 8  #include <qt/guiutil.h>
 9  #include <qt/platformstyle.h>
10  #include <qt/sendcoinsrecipient.h>
11  
12  #include <QAbstractButton>
13  #include <QLineEdit>
14  #include <QUrl>
15  
16  OpenURIDialog::OpenURIDialog(const PlatformStyle* platformStyle, QWidget* parent) : QDialog(parent, GUIUtil::dialog_flags),
17                                                                                      ui(new Ui::OpenURIDialog),
18                                                                                      m_platform_style(platformStyle)
19  {
20      ui->setupUi(this);
21      ui->pasteButton->setIcon(m_platform_style->SingleColorIcon(":/icons/editpaste"));
22      QObject::connect(ui->pasteButton, &QAbstractButton::clicked, ui->uriEdit, &QLineEdit::paste);
23  
24      GUIUtil::handleCloseWindowShortcut(this);
25  }
26  
27  OpenURIDialog::~OpenURIDialog()
28  {
29      delete ui;
30  }
31  
32  QString OpenURIDialog::getURI()
33  {
34      return ui->uriEdit->text();
35  }
36  
37  void OpenURIDialog::accept()
38  {
39      SendCoinsRecipient rcp;
40      if (GUIUtil::parseBitcoinURI(getURI(), &rcp)) {
41          /* Only accept value URIs */
42          QDialog::accept();
43      } else {
44          ui->uriEdit->setValid(false);
45      }
46  }
47  
48  void OpenURIDialog::changeEvent(QEvent* e)
49  {
50      if (e->type() == QEvent::PaletteChange) {
51          ui->pasteButton->setIcon(m_platform_style->SingleColorIcon(":/icons/editpaste"));
52      }
53  
54      QDialog::changeEvent(e);
55  }