Browse Source
why: - the current splash-screen has no referring to official images on - https://en.bitcoin.it/wiki/Promotional_graphics - the current splash screen only exists in a low res jpg - current splash screen looks dark and "hackish" - new splash screen should generate positive, "trust-emotions". - new splash screen gives the user infos about the running client. - new splash screen can handle long messages (in a lot of - languages the text is cropped in current release) - new size (x2) 400x312 - contains textual information about the client - textinfos are dynamicly written to the pixmap when -testnet is switch on, the splashscreen will show the bitcoin logo in testnet-color (as well as a text [testnet]) example: https://dl.dropbox.com/u/7383846/new_bitcoin_splash.png0.8
Jonas Schnelli
12 years ago
committed by
Jonas Schnelli
9 changed files with 110 additions and 13 deletions
After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 44 KiB |
@ -0,0 +1,82 @@ |
|||||||
|
#include "splashscreen.h" |
||||||
|
#include "clientversion.h" |
||||||
|
#include "util.h" |
||||||
|
|
||||||
|
#include <QPainter> |
||||||
|
#include <QApplication> |
||||||
|
|
||||||
|
SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f) : |
||||||
|
QSplashScreen(pixmap, f) |
||||||
|
{ |
||||||
|
// set reference point, paddings
|
||||||
|
int paddingRight = 50; |
||||||
|
int paddingTop = 50; |
||||||
|
int titleVersionVSpace = 17; |
||||||
|
int titleCopyrightVSpace = 40; |
||||||
|
|
||||||
|
float fontFactor = 1.0; |
||||||
|
|
||||||
|
// define text to place
|
||||||
|
QString titleText = QString(QApplication::applicationName()).replace(QString("-testnet"), QString(""), Qt::CaseSensitive); // cut of testnet, place it as single object further down
|
||||||
|
QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion())); |
||||||
|
QString copyrightText = QChar(0xA9)+QString(" 2009-%1 ").arg(COPYRIGHT_YEAR) + QString(tr("The Bitcoin developers")); |
||||||
|
QString testnetAddText = QString(tr("[testnet]")); // define text to place as single text object
|
||||||
|
|
||||||
|
QString font = "Arial"; |
||||||
|
|
||||||
|
// load the bitmap for writing some text over it
|
||||||
|
QPixmap newPixmap; |
||||||
|
if(GetBoolArg("-testnet")) { |
||||||
|
newPixmap = QPixmap(":/images/splash_testnet"); |
||||||
|
} |
||||||
|
else { |
||||||
|
newPixmap = QPixmap(":/images/splash"); |
||||||
|
} |
||||||
|
|
||||||
|
QPainter pixPaint(&newPixmap); |
||||||
|
pixPaint.setPen(QColor(100,100,100)); |
||||||
|
|
||||||
|
// check font size and drawing with
|
||||||
|
pixPaint.setFont(QFont(font, 33*fontFactor)); |
||||||
|
QFontMetrics fm = pixPaint.fontMetrics(); |
||||||
|
int titleTextWidth = fm.width(titleText); |
||||||
|
if(titleTextWidth > 160) { |
||||||
|
// strange font rendering, Arial probably not found
|
||||||
|
fontFactor = 0.75; |
||||||
|
} |
||||||
|
|
||||||
|
pixPaint.setFont(QFont(font, 33*fontFactor)); |
||||||
|
fm = pixPaint.fontMetrics(); |
||||||
|
titleTextWidth = fm.width(titleText); |
||||||
|
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop,titleText); |
||||||
|
|
||||||
|
pixPaint.setFont(QFont(font, 15*fontFactor)); |
||||||
|
|
||||||
|
// if the version string is to long, reduce size
|
||||||
|
fm = pixPaint.fontMetrics(); |
||||||
|
int versionTextWidth = fm.width(versionText); |
||||||
|
if(versionTextWidth > titleTextWidth+paddingRight-10) { |
||||||
|
pixPaint.setFont(QFont(font, 10*fontFactor)); |
||||||
|
titleVersionVSpace -= 5; |
||||||
|
} |
||||||
|
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText); |
||||||
|
|
||||||
|
// draw copyright stuff
|
||||||
|
pixPaint.setFont(QFont(font, 10*fontFactor)); |
||||||
|
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText); |
||||||
|
|
||||||
|
// draw testnet string if -testnet is on
|
||||||
|
if(QApplication::applicationName().contains(QString("-testnet"))) { |
||||||
|
// draw copyright stuff
|
||||||
|
QFont boldFont = QFont(font, 10*fontFactor); |
||||||
|
boldFont.setWeight(QFont::Bold); |
||||||
|
pixPaint.setFont(boldFont); |
||||||
|
fm = pixPaint.fontMetrics(); |
||||||
|
int testnetAddTextWidth = fm.width(testnetAddText); |
||||||
|
pixPaint.drawText(newPixmap.width()-testnetAddTextWidth-10,15,testnetAddText); |
||||||
|
} |
||||||
|
|
||||||
|
pixPaint.end(); |
||||||
|
|
||||||
|
this->setPixmap(newPixmap); |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
#ifndef SPLASHSCREEN_H |
||||||
|
#define SPLASHSCREEN_H |
||||||
|
|
||||||
|
#include <QSplashScreen> |
||||||
|
|
||||||
|
/** class for the splashscreen with information of the running client
|
||||||
|
*/ |
||||||
|
class SplashScreen : public QSplashScreen |
||||||
|
{ |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
explicit SplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = 0); |
||||||
|
}; |
||||||
|
|
||||||
|
#endif // SPLASHSCREEN_H
|
Loading…
Reference in new issue