Browse Source

qt: Unify AboutDialog and HelpMessageDialog

They share so much code and functionality that they may as well
be one class.
0.10
Wladimir J. van der Laan 10 years ago
parent
commit
5c97aae6da
  1. 1
      src/Makefile.qt.include
  2. 3
      src/qt/bitcoingui.cpp
  3. 130
      src/qt/forms/aboutdialog.ui
  4. 7
      src/qt/forms/helpmessagedialog.ui
  5. 67
      src/qt/utilitydialog.cpp
  6. 22
      src/qt/utilitydialog.h

1
src/Makefile.qt.include

@ -76,7 +76,6 @@ QT_TS = \ @@ -76,7 +76,6 @@ QT_TS = \
qt/locale/bitcoin_zh_TW.ts
QT_FORMS_UI = \
qt/forms/aboutdialog.ui \
qt/forms/addressbookpage.ui \
qt/forms/askpassphrasedialog.ui \
qt/forms/coincontroldialog.ui \

3
src/qt/bitcoingui.cpp

@ -549,8 +549,7 @@ void BitcoinGUI::aboutClicked() @@ -549,8 +549,7 @@ void BitcoinGUI::aboutClicked()
if(!clientModel)
return;
AboutDialog dlg(this);
dlg.setModel(clientModel);
HelpMessageDialog dlg(this, true);
dlg.exec();
}

130
src/qt/forms/aboutdialog.ui

@ -1,130 +0,0 @@ @@ -1,130 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AboutDialog</class>
<widget class="QDialog" name="AboutDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>593</width>
<height>319</height>
</rect>
</property>
<property name="windowTitle">
<string>About Bitcoin Core</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="pixmap">
<pixmap resource="../bitcoin.qrc">:/images/about</pixmap>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="versionLabel">
<property name="cursor">
<cursorShape>IBeamCursor</cursorShape>
</property>
<property name="text">
<string notr="true">
(placeholder for version message)
</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../bitcoin.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AboutDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AboutDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
</connections>
</ui>

7
src/qt/forms/helpmessagedialog.ui

@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
</font>
</property>
<property name="windowTitle">
<string>Bitcoin Core - Command-line options</string>
<string notr="true">Bitcoin Core - Command-line options</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -54,11 +54,6 @@ @@ -54,11 +54,6 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="helpMessageLabel">
<property name="font">
<font>
<family>Terminal</family>
</font>
</property>
<property name="cursor">
<cursorShape>IBeamCursor</cursorShape>
</property>

67
src/qt/utilitydialog.cpp

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
#include "utilitydialog.h"
#include "ui_aboutdialog.h"
#include "ui_helpmessagedialog.h"
#include "bitcoingui.h"
@ -19,19 +18,15 @@ @@ -19,19 +18,15 @@
#include <QRegExp>
#include <QVBoxLayout>
/** "About" dialog box */
AboutDialog::AboutDialog(QWidget *parent) :
/** "Help message" or "About" dialog box */
HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool about) :
QDialog(parent),
ui(new Ui::AboutDialog)
ui(new Ui::HelpMessageDialog)
{
ui->setupUi(this);
}
GUIUtil::restoreWindowGeometry("nHelpMessageDialogWindow", this->size(), this);
void AboutDialog::setModel(ClientModel *model)
{
if(model)
{
QString version = tr("Bitcoin Core") + " " + tr("version") + " " + model->formatFullVersion();
QString version = tr("Bitcoin Core") + " " + tr("version") + " " + QString::fromStdString(FormatFullVersion());
/* On x86 add a bit specifier to the version so that users can distinguish between
* 32 and 64 bit builds. On other architectures, 32/64 bit may be more ambigious.
*/
@ -41,38 +36,27 @@ void AboutDialog::setModel(ClientModel *model) @@ -41,38 +36,27 @@ void AboutDialog::setModel(ClientModel *model)
version += " " + tr("(%1-bit)").arg(32);
#endif
if (about)
{
setWindowTitle(tr("About Bitcoin Core"));
/// HTML-format the license message from the core
QString licenseInfo = QString::fromStdString(LicenseInfo());
QString licenseInfoHTML = licenseInfo;
// Make URLs clickable
QRegExp uri("<(.*)>", Qt::CaseSensitive, QRegExp::RegExp2);
uri.setMinimal(true); // use non-greedy matching
licenseInfo = licenseInfo.replace(uri, "<a href=\"\\1\">\\1</a>");
licenseInfoHTML.replace(uri, "<a href=\"\\1\">\\1</a>");
// Replace newlines with HTML breaks
licenseInfo = licenseInfo.replace("\n\n", "<br><br>");
ui->versionLabel->setText(version + "<br><br>" + licenseInfo);
}
}
AboutDialog::~AboutDialog()
{
delete ui;
}
void AboutDialog::on_buttonBox_accepted()
{
close();
}
/** "Help message" dialog box */
HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool versionOnly) :
QDialog(parent),
ui(new Ui::HelpMessageDialog)
{
ui->setupUi(this);
GUIUtil::restoreWindowGeometry("nHelpMessageDialogWindow", this->size(), this);
QString version = tr("Bitcoin Core") + " " + tr("version") + " " + QString::fromStdString(FormatFullVersion());
licenseInfoHTML.replace("\n\n", "<br><br>");
ui->helpMessageLabel->setTextFormat(Qt::RichText);
ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
text = version + "\n" + licenseInfo;
ui->helpMessageLabel->setText(version + "<br><br>" + licenseInfoHTML);
ui->helpMessageLabel->setWordWrap(true);
} else {
setWindowTitle(tr("Command-line options"));
QString header = tr("Usage:") + "\n" +
" bitcoin-qt [" + tr("command-line options") + "] " + "\n";
@ -86,12 +70,9 @@ HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool versionOnly) : @@ -86,12 +70,9 @@ HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool versionOnly) :
" -splash " + tr("Show splash screen on startup (default: 1)");
ui->helpMessageLabel->setFont(GUIUtil::bitcoinAddressFont());
// Set help message text
if(versionOnly)
ui->helpMessageLabel->setText(version + "\n" + QString::fromStdString(LicenseInfo()));
else
ui->helpMessageLabel->setText(version + "\n" + header + "\n" + coreOptions + "\n" + uiOptions);
text = version + "\n" + header + "\n" + coreOptions + "\n" + uiOptions;
ui->helpMessageLabel->setText(text);
}
}
HelpMessageDialog::~HelpMessageDialog()
@ -103,7 +84,7 @@ HelpMessageDialog::~HelpMessageDialog() @@ -103,7 +84,7 @@ HelpMessageDialog::~HelpMessageDialog()
void HelpMessageDialog::printToConsole()
{
// On other operating systems, the expected action is to print the message to the console.
fprintf(stdout, "%s\n", qPrintable(ui->helpMessageLabel->text()));
fprintf(stdout, "%s\n", qPrintable(text));
}
void HelpMessageDialog::showOrPrint()

22
src/qt/utilitydialog.h

@ -12,35 +12,16 @@ class BitcoinGUI; @@ -12,35 +12,16 @@ class BitcoinGUI;
class ClientModel;
namespace Ui {
class AboutDialog;
class HelpMessageDialog;
}
/** "About" dialog box */
class AboutDialog : public QDialog
{
Q_OBJECT
public:
explicit AboutDialog(QWidget *parent);
~AboutDialog();
void setModel(ClientModel *model);
private:
Ui::AboutDialog *ui;
private slots:
void on_buttonBox_accepted();
};
/** "Help message" dialog box */
class HelpMessageDialog : public QDialog
{
Q_OBJECT
public:
explicit HelpMessageDialog(QWidget *parent, bool versionOnly);
explicit HelpMessageDialog(QWidget *parent, bool about);
~HelpMessageDialog();
void printToConsole();
@ -48,6 +29,7 @@ public: @@ -48,6 +29,7 @@ public:
private:
Ui::HelpMessageDialog *ui;
QString text;
private slots:
void on_okButton_accepted();

Loading…
Cancel
Save