openuridialog.cpp raw

   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  }
  56