a few fixes:

1. coredump on closing app
2. not resizing toolbar
3. added cards image to the right side of toolbar + 'visit our website' link
4. removed odd white stripe in adverts widget
5. unified offline data resource directory
This commit is contained in:
Jakub Rojek
2015-11-09 17:48:55 +01:00
parent f228cd173c
commit 4e92856123
16 changed files with 190 additions and 91 deletions

View File

@@ -1,5 +1,10 @@
#include "casinocoinwebapiparser.h"
#include "util.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
@@ -83,11 +88,9 @@ void CasinoCoinWebAPIParser::ParseNewsItems( const QJsonObject& a_rJsonNewsItems
QByteArray CasinoCoinWebAPIParser::ReadFile( QString a_strSourcePath )
{
QByteArray strAnswer;
if ( !QDir( "offlineData" ).exists() )
{
QDir().mkdir( "offlineData" );
}
QFile fileOutput( QDir( "offlineData" ).absoluteFilePath( a_strSourcePath ) );
boost::filesystem::path pathCasinoCoinAPIResources = GetDataDir() / "cscapires";
QFile fileOutput( QDir( QString::fromStdString( pathCasinoCoinAPIResources.string() ) ).absoluteFilePath( a_strSourcePath ) );
if ( !fileOutput.open( QIODevice::ReadOnly ) )
{
qWarning() << "cannot open file to read: " << QDir::current().relativeFilePath( a_strSourcePath );
@@ -102,11 +105,10 @@ QByteArray CasinoCoinWebAPIParser::ReadFile( QString a_strSourcePath )
void CasinoCoinWebAPIParser::StoreFile( QString a_strDestinationPath, const QByteArray& a_rJsonFile )
{
if ( !QDir( "offlineData" ).exists() )
{
QDir().mkdir( "offlineData" );
}
QFile fileOutput( QDir( "offlineData" ).absoluteFilePath( a_strDestinationPath ) );
boost::filesystem::path pathCasinoCoinAPIResources = GetDataDir() / "cscapires";
boost::filesystem::create_directories(pathCasinoCoinAPIResources);
QFile fileOutput( QDir( QString::fromStdString( pathCasinoCoinAPIResources.string() ) ).absoluteFilePath( a_strDestinationPath ) );
if ( !fileOutput.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
{
qWarning() << "cannot open file to write: " << QDir::current().relativeFilePath( a_strDestinationPath );

View File

@@ -64,6 +64,7 @@
<file alias="splash">res/images/splash.png</file>
<file alias="splash_testnet">res/images/splash_testnet.png</file>
<file alias="backg">res/images/wallet.png</file>
<file>res/images/GUI20_mainToolBar_cards.png</file>
</qresource>
<qresource prefix="/movies">
<file alias="update_spinner">res/movies/update_spinner.mng</file>

View File

@@ -62,7 +62,7 @@ const QString BitcoinGUI::DEFAULT_WALLET = "~Default";
BitcoinGUI::BitcoinGUI(QWidget *parent) :
QMainWindow(parent),
clientModel(0),
menuBar_new(0),
toolbarGUI20(0),
encryptWalletAction(0),
changePassphraseAction(0),
aboutQtAction(0),
@@ -82,13 +82,13 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) :
#endif
// Create wallet frame with main menu
walletFrame = new WalletFrame(this);
menuBar_new = new GUIMenuToolbarWidget( this );
connect( menuBar_new, SIGNAL( signalItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes ) ), this, SLOT( slotMenuToolbarItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes ) ), Qt::UniqueConnection );
toolbarGUI20 = new GUIMenuToolbarWidget( this );
connect( toolbarGUI20, SIGNAL( signalItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes ) ), this, SLOT( slotMenuToolbarItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes ) ), Qt::UniqueConnection );
// envelope them in another widget
QWidget* pCentralWidget = new QWidget( this );
QVBoxLayout* pBoxLayout = new QVBoxLayout();
pBoxLayout->addWidget( menuBar_new->dockQmlToWidget() );
pBoxLayout->addWidget( toolbarGUI20->dockQmlToWidget() );
pBoxLayout->addWidget( walletFrame );
pCentralWidget->setLayout( pBoxLayout );
@@ -300,18 +300,6 @@ void BitcoinGUI::createMenuBar()
help->addAction(aboutQtAction);
}
void BitcoinGUI::createToolBars()
{
QToolBar *toolbar = addToolBar(tr("Tabs toolbar"));
toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
toolbar->addAction(overviewAction);
toolbar->addAction(sendCoinsAction);
toolbar->addAction(receiveCoinsAction);
toolbar->addAction(historyAction);
toolbar->addAction(addressBookAction);
}
void BitcoinGUI::setClientModel(ClientModel *clientModel)
{
this->clientModel = clientModel;
@@ -481,7 +469,7 @@ void BitcoinGUI::optionsClicked()
void BitcoinGUI::aboutClicked()
{
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::INFO );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::INFO );
AboutDialog dlg;
dlg.setModel(clientModel);
dlg.exec();
@@ -499,31 +487,31 @@ void BitcoinGUI::aboutClicked()
void BitcoinGUI::gotoOverviewPage()
{
if (walletFrame) walletFrame->gotoOverviewPage();
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::OVERVIEW );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::OVERVIEW );
}
void BitcoinGUI::gotoHistoryPage()
{
if (walletFrame) walletFrame->gotoHistoryPage();
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::TRANSACTIONS );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::TRANSACTIONS );
}
void BitcoinGUI::gotoAddressBookPage()
{
if (walletFrame) walletFrame->gotoAddressBookPage();
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::CONTACTS );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::CONTACTS );
}
void BitcoinGUI::gotoReceiveCoinsPage()
{
if (walletFrame) walletFrame->gotoReceiveCoinsPage();
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::RECEIVE );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::RECEIVE );
}
void BitcoinGUI::gotoSendCoinsPage(QString addr)
{
if (walletFrame) walletFrame->gotoSendCoinsPage(addr);
if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::SEND );
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::SEND );
}
void BitcoinGUI::gotoSignMessageTab(QString addr)

View File

@@ -82,7 +82,7 @@ protected:
private:
ClientModel *clientModel;
WalletFrame *walletFrame;
GUIMenuToolbarWidget *menuBar_new;
GUIMenuToolbarWidget *toolbarGUI20;
QLabel *labelEncryptionIcon;
QLabel *labelConnectionsIcon;
@@ -121,8 +121,6 @@ private:
void createActions();
/** Create the menu bar and sub-menus. */
void createMenuBar();
/** Create the toolbars */
void createToolBars();
/** Create system tray icon and notification */
void createTrayIcon();
/** Create system tray menu (or setup the dock menu) */

View File

@@ -9,6 +9,9 @@ GUI20Skin::GUI20Skin( QObject* a_pParent )
, colorToolbarMainBottomCurrent( "#e1252b" )
, colorToolbarMainTextCurrent( "#ffffff" )
, colorToolbarMainTextNormal( "#3f0a0c" )
, colorToolbarMainTextWebsiteURL( colorToolbarMainTextCurrent )
, colorToolbarMainTextVisitWebsite( "#ffffaf" )
, colorToolbarMainTextShadow( "#c72427" )
, colorMainWindowBackground( "#afafaf" )
, colorMainWindowFrameBackground( "#ffffff" )

View File

@@ -20,6 +20,8 @@ class GUI20Skin : public QObject
Q_PROPERTY( QColor colorToolbarMainTextCurrent READ GetColorToolbarMainTextCurrent CONSTANT )
Q_PROPERTY( QColor colorToolbarMainTextNormal READ GetColorToolbarMainTextNormal CONSTANT )
Q_PROPERTY( QColor colorToolbarMainTextShadow READ GetColorToolbarMainTextShadow CONSTANT )
Q_PROPERTY( QColor colorToolbarMainTextWebsiteURL READ GetColorToolbarMainTextWebsiteURL CONSTANT )
Q_PROPERTY( QColor colorToolbarMainTextVisitWebsite READ GetColorToolbarMainTextVisitWebsite CONSTANT )
Q_ENUMS( ESizeConstants )
@@ -41,8 +43,8 @@ public:
const QColor GetColorToolbarMainTextCurrent() const {return colorToolbarMainTextCurrent;}
const QColor GetColorToolbarMainTextNormal() const {return colorToolbarMainTextNormal;}
const QColor GetColorToolbarMainTextShadow() const {return colorToolbarMainTextShadow;}
const QColor GetColorToolbarMainTextWebsiteURL() const {return colorToolbarMainTextWebsiteURL;}
const QColor GetColorToolbarMainTextVisitWebsite() const {return colorToolbarMainTextVisitWebsite;}
private:
const QColor colorToolbarMainGradientBegin;
const QColor colorToolbarMainGradientEnd;
@@ -53,6 +55,8 @@ private:
const QColor colorToolbarMainTextCurrent;
const QColor colorToolbarMainTextNormal;
const QColor colorToolbarMainTextShadow;
const QColor colorToolbarMainTextWebsiteURL;
const QColor colorToolbarMainTextVisitWebsite;
const QColor colorMainWindowBackground;
const QColor colorMainWindowFrameBackground;

View File

@@ -30,7 +30,7 @@ GUIBannerWidget::GUIBannerWidget(QWidget *parent)
GUIBannerWidget::~GUIBannerWidget()
{
// member objects are moved to qml engine and it manages their instances
}
void GUIBannerWidget::registerCustomQmlTypes()
@@ -43,6 +43,9 @@ void GUIBannerWidget::registerCustomQmlTypes()
QWidget* GUIBannerWidget::dockQmlToWidget()
{
QQuickView* pBannerWindow = new QQuickView;
QWidget* pPlaceHolder = 0;
if ( pBannerWindow )
{
pBannerWindow->setSource( QUrl( QStringLiteral( "qrc:/qml/qtquick_controls/qml/QmlGUIBannerWindow.qml" ) ) );
QQmlEngine* pEngine = pBannerWindow->engine();
if ( pEngine )
@@ -50,10 +53,12 @@ QWidget* GUIBannerWidget::dockQmlToWidget()
m_pQmlImageProvider = new QmlImageProvider();
pEngine->addImageProvider( "advertImages", m_pQmlImageProvider );
}
QWidget* pPlaceHolder = QWidget::createWindowContainer( pBannerWindow, this );
pPlaceHolder->setMinimumSize( 445, 120 );
pPlaceHolder->setMaximumSize( 445, 120 );
pPlaceHolder->setStyleSheet( "background-color: rgb(242, 241, 240);");
pPlaceHolder = QWidget::createWindowContainer( pBannerWindow, this );
if ( pPlaceHolder )
{
pPlaceHolder->setMinimumSize( 445, 115 );
pPlaceHolder->setMaximumSize( 445, 115 );
}
QQuickItem* pRootObject = pBannerWindow->rootObject();
if ( pRootObject )
{
@@ -64,6 +69,7 @@ QWidget* GUIBannerWidget::dockQmlToWidget()
m_pBannerControl->setHeight( 115 );
}
}
}
return pPlaceHolder;
}

View File

@@ -9,6 +9,8 @@
GUIMenuToolbarControl::GUIMenuToolbarControl( QQuickItem* a_pParent )
: QQuickItem( a_pParent )
, m_pMenuToolbarView( 0 )
, m_strVisitWebsiteText( tr( "Visit our website" ) )
, m_strWebsiteURL( tr( "casinocoin.org" ) )
{
}
@@ -51,6 +53,24 @@ void GUIMenuToolbarControl::InitializeMenuToolbarView( GUIMenuToolbarListView* a
}
}
void GUIMenuToolbarControl::SetVisitWebsiteText( QString a_strNewText )
{
if ( m_strVisitWebsiteText != a_strNewText )
{
m_strVisitWebsiteText = a_strNewText;
emit signalVisitWebsiteTextChanged();
}
}
void GUIMenuToolbarControl::SetWebsiteURL( QString a_strNewText )
{
if ( m_strWebsiteURL != a_strNewText )
{
m_strWebsiteURL = a_strNewText;
emit signalWebsiteURLChanged();
}
}
void GUIMenuToolbarControl::ConnectListViewSignals()
{
if ( m_pMenuToolbarView )

View File

@@ -8,6 +8,10 @@ class GUIMenuToolbarListView;
class GUIMenuToolbarControl : public QQuickItem
{
Q_OBJECT
Q_PROPERTY( QString p_strVisitWebsiteText MEMBER m_strVisitWebsiteText NOTIFY signalVisitWebsiteTextChanged )
Q_PROPERTY( QString p_strWebsiteURL MEMBER m_strWebsiteURL NOTIFY signalWebsiteURLChanged )
Q_ENUMS( EMenuToolbarItemTypes )
public:
@@ -27,16 +31,27 @@ public:
Q_INVOKABLE void InitializeMenuToolbarView( GUIMenuToolbarListView* a_pView );
GUIMenuToolbarListView* GetMenuToolbarView() const { return m_pMenuToolbarView; }
void SetVisitWebsiteText( QString a_strNewText );
void SetWebsiteURL( QString a_strNewText );
QString GetVisitWebsiteText() const { return m_strVisitWebsiteText; }
QString GetWebsiteURL() const { return m_strWebsiteURL; }
public slots:
signals:
void signalCurrentItemIndexChanged();
public slots:
void signalVisitWebsiteTextChanged();
void signalWebsiteURLChanged();
void signalOurWebsiteURLClicked();
private:
GUIMenuToolbarListView* m_pMenuToolbarView;
QString m_strVisitWebsiteText;
QString m_strWebsiteURL;
void ConnectListViewSignals();
private slots:
void slotCurrentItemIndexChanged();
};

View File

@@ -11,6 +11,9 @@
#include <QQuickView>
#include <QQmlContext>
#include <QDesktopServices>
#include <QUrl>
GUIMenuToolbarWidget::GUIMenuToolbarWidget( QWidget *a_pParent )
: QWidget( a_pParent )
, m_pToolbarControl( 0 )
@@ -21,16 +24,7 @@ GUIMenuToolbarWidget::GUIMenuToolbarWidget( QWidget *a_pParent )
GUIMenuToolbarWidget::~GUIMenuToolbarWidget()
{
if ( m_pQmlImageProvider )
{
delete m_pQmlImageProvider;
m_pQmlImageProvider = 0;
}
if( m_pToolbarControl )
{
delete m_pToolbarControl;
m_pToolbarControl = 0;
}
// member objects are moved to qml engine and it manages their instances
}
void GUIMenuToolbarWidget::registerCustomQmlTypes()
@@ -56,9 +50,26 @@ void GUIMenuToolbarWidget::slotCurrentItemChanged()
}
}
void GUIMenuToolbarWidget::slotOurWebsiteURLClicked()
{
qDebug() << "clicked";
if ( m_pToolbarControl )
{
QString strUrl = m_pToolbarControl->GetWebsiteURL();
if ( !strUrl.contains( "http" ) )
{
strUrl.prepend( "http://" );
}
QDesktopServices::openUrl( QUrl( strUrl ) );
}
}
QWidget* GUIMenuToolbarWidget::dockQmlToWidget()
{
QQuickView* pMenuToolbarWindow = new QQuickView;
QWidget* pPlaceHolder = 0;
if ( pMenuToolbarWindow )
{
QQmlContext* pContext = pMenuToolbarWindow->rootContext();
if ( pContext )
{
@@ -78,13 +89,15 @@ QWidget* GUIMenuToolbarWidget::dockQmlToWidget()
if ( m_pToolbarControl )
{
connect( m_pToolbarControl, SIGNAL( signalCurrentItemIndexChanged() ), this, SLOT( slotCurrentItemChanged() ), Qt::UniqueConnection );
connect( m_pToolbarControl, SIGNAL( signalOurWebsiteURLClicked() ), this, SLOT( slotOurWebsiteURLClicked() ), Qt::UniqueConnection );
}
}
QWidget* pPlaceHolder = QWidget::createWindowContainer( pMenuToolbarWindow, this );
pPlaceHolder = QWidget::createWindowContainer( pMenuToolbarWindow );
if ( pPlaceHolder )
{
pPlaceHolder->setMinimumHeight( 82 );
}
}
return pPlaceHolder;
}

View File

@@ -29,6 +29,7 @@ private:
private slots:
void slotCurrentItemChanged();
void slotOurWebsiteURLClicked();
};
#endif // GUIMENUTOOLBARWIDGET_H

View File

@@ -5,7 +5,7 @@ GUIBannerControl
{
id: id_bannerControl
property color colorBackgroundInWidget: "#F2F0F1"
property color colorBackgroundInWidget: "#FFFFFF"
Rectangle
{
id: id_leftArrow

View File

@@ -7,6 +7,7 @@ Rectangle
{
id: id_bannerControlMain
}
color: "transparent"
width: id_bannerControlMain.width
height: id_bannerControlMain.height
}

View File

@@ -53,5 +53,52 @@ GUIMenuToolbarControl
NumberAnimation { duration: 300; easing.type: Easing.InOutQuad }
}
}
Image
{
id: id_cardsImage
anchors.top: id_toolbarRect.top
anchors.right: id_toolbarRect.right
source: "qrc:/images/res/images/GUI20_mainToolBar_cards.png"
}
Rectangle
{
id: id_visitWebsiteBox
height: id_visitWebsiteText.height + id_visitWebsiteURL.height
width: id_visitWebsiteText.width
anchors.rightMargin: 20
anchors.right: id_toolbarRect.right
anchors.topMargin: 25
anchors.top: id_toolbarRect.top
color: "transparent"
Column
{
anchors.right: id_visitWebsiteBox.right
anchors.top: id_visitWebsiteBox.top
Text
{
id: id_visitWebsiteText
text: id_toolbarControl.p_strVisitWebsiteText
color: GUI20Skin.colorToolbarMainTextVisitWebsite
}
Text
{
id: id_visitWebsiteURL
text: id_toolbarControl.p_strWebsiteURL
font.bold: true
color: GUI20Skin.colorToolbarMainTextWebsiteURL
}
}
MouseArea
{
id: id_visitWebsiteMouseArea
anchors.fill: id_visitWebsiteBox
onClicked:
{
console.log( "clicked hehe" )
signalOurWebsiteURLClicked()
}
}
}
}
}

View File

@@ -3,8 +3,8 @@ import QtQuick 2.0
Rectangle
{
id: id_toolbarRoot
width: 1280
height: 77 + 5
width: parent.width
height: parent.height
color: "transparent"
QmlGUIMenuToolbarControl
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB