108 Commits

Author SHA1 Message Date
Andre
013c31b88d Created OSX Qt Project file 2016-06-16 23:22:08 +02:00
ajochems
34b02acb1e Updated linux Qt build 2016-06-15 18:00:02 +02:00
Andre Jochems
c99f19ae8a Updated Linux Qt build files 2016-06-15 13:44:50 +02:00
Andre Jochems
f25171d266 Release v3 updates 2016-06-14 15:44:53 +02:00
Andre Jochems
ab4d8be388 Added release related files 2016-06-14 14:50:26 +02:00
Andre Jochems
23363073bb qt.conf added 2016-06-10 15:57:29 +02:00
Andre Jochems
d1de014deb updated version and blockheight 2016-06-10 13:46:45 +02:00
Andre Jochems
42a1dc685e Added OpenGL Software Renderer 2016-06-10 11:19:53 +02:00
Andre Jochems
b3cbb74700 Updated blocktime format 2016-06-09 15:01:47 +02:00
Andre Jochems
dfb03115eb Added extra checkpoint upto block 1525492 2016-06-09 14:50:14 +02:00
Andre Jochems
f4b40bed09 Updated GetTotalCoinSupply values 2016-06-09 13:56:39 +02:00
Andre Jochems
00f5ffa06c Added several currencies 2016-06-09 13:41:48 +02:00
Andre Jochems
4add93f3a1 Merge branch 'development' of https://github.com/casinocoin/casinocoin into development 2016-06-09 12:52:31 +02:00
Andre Jochems
9f8937da99 Twitter Widget added to InfoPage 2016-06-09 12:16:49 +02:00
Andre Jochems
1b7473bcb2 Updated UserInterface 2016-06-02 20:30:07 +02:00
ajochems
94d9128cdd Merge pull request #22 from casinocoin/issue-18
Reduced coin reward and version update
2016-06-02 14:08:54 +02:00
Andre Jochems
1a5784fa8b Reduced coin reward and version update 2016-06-02 14:05:57 +02:00
ajochems
8906eb0445 Linux compilation fix 2016-04-19 23:43:21 +00:00
ajochems
5f30e8002b Updated Linux build 2016-04-19 09:02:36 +00:00
ajochems
b478c57fe4 Merge pull request #17 from casinocoin/issue-16
changes to support updated boost and Qt
2016-04-12 13:52:56 +02:00
Andre Jochems
394f6e6efe changes to support updated boost and Qt 2016-04-12 13:49:56 +02:00
ajochems
276ef38c7b Merge pull request #15 from casinocoin/issue-13
dynamic coin name
2016-04-07 09:38:50 +02:00
Andre Jochems
56bf480259 dynamic coin name 2016-04-06 14:56:42 +02:00
Kepoly
2e0aaa5022 Defined https for official website link 2016-03-15 16:18:11 -04:00
ajochems
eb53a54e27 Merge pull request #12 from CartmanSPC/master
Update and fix README.md
2016-03-01 08:07:22 +01:00
CartmanSPC
1521d79911 Update and fix README.md
Update the release link and clean various typos.
2016-02-29 21:09:56 -08:00
Andre Jochems
093b9ec1ff Bug fixed in undefined color definition 2015-12-14 12:27:57 +01:00
Andre Jochems
7497a0233e Added missig dll 2015-12-11 23:30:19 +01:00
Andre Jochems
df82a9e0c7 Fixes #8 2015-12-11 23:16:37 +01:00
Andre Jochems
d325409101 Fixes #10 2015-12-11 17:57:48 +01:00
Andre Jochems
ce170d8ad7 Fixes #9 2015-12-11 17:34:04 +01:00
Andre Jochems
70ee980532 Fixes #7 2015-12-11 16:43:01 +01:00
Andre Jochems
5cebe42a99 Fixes #6 2015-12-11 15:46:34 +01:00
Ubuntu Admin
1ac9b40ec5 Merge branch 'master' of https://github.com/casinocoin/casinocoin 2015-12-04 17:27:27 +01:00
Ubuntu Admin
9fceb7451e Upstart script 2015-12-04 17:27:04 +01:00
Andre Jochems
b7d81c6e32 Version updated to 2.0.0.0 2015-12-03 15:59:47 +01:00
Andre Jochems
958f97b0c1 Merge branch 'master' into GUI-2.0 2015-12-03 15:37:58 +01:00
Andre Jochems
721a01e190 Windows project settings 2015-12-03 15:16:48 +01:00
Andre Jochems
562a55093a Merge branch 'GUI-2.0' of https://github.com/casinocoin/casinocoin into GUI-2.0 2015-12-03 15:16:06 +01:00
Andre Jochems
376af0f4c5 NSIS installer script 2015-12-03 15:15:37 +01:00
ajochems
4f1fdf14a6 Added linux Qt project file 2015-12-02 00:41:21 +01:00
Andre Jochems
5d10a3882b Qt project file for windows 2015-12-01 10:58:44 +01:00
Andre Jochems
d6ba4a154c Layout changes 2015-12-01 10:57:18 +01:00
Andre Jochems
9411ed14a5 Skins changes 2015-11-30 17:06:15 +01:00
felixrojauro
7d283e555c Exchanges refreshed every minute 2015-11-30 14:35:45 +01:00
felixrojauro
9e2c8f331a Exchanges widget tuning 2015-11-30 14:01:49 +01:00
Andre Jochems
b091799d44 Exchanges view updates 2015-11-30 11:21:55 +01:00
Andre Jochems
239fd6afaf Added QmlImports 2015-11-27 16:06:28 +01:00
felixrojauro
59d16a1d12 Exchanges widget 2015-11-27 15:44:38 +01:00
felixrojauro
18f49ef4e5 UI changes - Calendar widget, BitcoinAmountField styling, other minor fixes 2015-11-26 16:41:56 +01:00
Andre Jochems
849a807d38 Added active exchanges parser 2015-11-26 14:30:24 +01:00
Salvatore Giudice
f7a752473b added dig0.com dns seeds 2015-11-26 18:58:22 +09:00
felixrojauro
dfcf488c7c UI Checkbox, Radiobutton, Indication arrows styling.
Info dialog moveed to scrollarea
2015-11-26 08:15:34 +01:00
felixrojauro
e2f6eae47d Sleep changed to cross-platform sleep; send/receive.png icons changed 2015-11-25 15:43:16 +01:00
Andre Jochems
5d5aec5b26 GUI changes 2015-11-25 13:37:51 +01:00
Andre Jochems
3f6aedb0e5 Merge last commits on branch 'GUI-2.0' 2015-11-25 10:39:36 +01:00
Andre Jochems
eb5c432b9f Added InfoPage implementation 2015-11-25 10:21:12 +01:00
felixrojauro
e796796afd just a few icons updated 2015-11-24 01:33:55 +01:00
Andre Jochems
93b1e17402 Added getcoinsupply to rpc wallet calls 2015-11-23 15:48:52 +01:00
Andre Jochems
fe5ec6cb5b Show/Hide Promotions now applied add startup 2015-11-23 11:43:21 +01:00
Andre Jochems
53c55374ae changed logos 2015-11-20 14:28:47 +01:00
ajochems
c315fc2836 fixed duplicate widget name 2015-11-20 11:04:53 +01:00
Andre Jochems
36812ce895 Added frame arround prypto form 2015-11-19 15:35:19 +01:00
Andre Jochems
12fc3ae140 Fixed rgb profile for PNG images 2015-11-19 15:08:00 +01:00
Andre Jochems
07e9dea07b Currency format updated 2015-11-19 15:06:24 +01:00
Andre Jochems
2079e3456a Coin Information API integrated 2015-11-18 17:37:46 +01:00
felixrojauro
b2e93c6ef4 CSCFusionStyle (WIP) 2015-11-16 18:47:14 +01:00
felixrojauro
53f2e7d8b7 CSCPublicApi moved to permanent server. 2015-11-16 16:56:55 +01:00
Jakub
e153d4666d Compilation error fix. 2015-11-16 16:34:40 +01:00
Andre Jochems
455e0af74c Added Prypto files to project 2015-11-16 12:26:52 +01:00
Andre Jochems
a6794b3ce3 Merge branch 'GUI-2.0' of https://github.com/casinocoin/casinocoin into GUI-2.0 2015-11-16 12:19:59 +01:00
Andre Jochems
15a1c2e63b Prypto Redeem implemented 2015-11-16 12:09:46 +01:00
felixrojauro
5734784b69 Custom CSCFusionStyle (WIP) 2015-11-16 01:10:41 +01:00
felixrojauro
82294a7aac Menu Toolbar version 1.1 2015-11-16 01:08:02 +01:00
Andre Jochems
2f83b066a6 Prypto Redeem form added 2015-11-13 13:07:02 +01:00
Andre Jochems
22f98699bd Splashcreen update 2015-11-12 23:04:47 +01:00
Jakub Rojek
4e92856123 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
2015-11-09 17:48:55 +01:00
Andre Jochems
4b1178f643 Revert "TestCommit"
This reverts commit 1b0545c4e8.
2015-11-09 13:09:44 +01:00
Andre Jochems
7841130cd3 Revert "Adverts widget v0.2 added:"
This reverts commit 5a3b2dbce6.
2015-11-09 13:09:41 +01:00
Andre Jochems
5924b24782 Revert "Adverts widget supports population from web and from local files."
This reverts commit 85a611ed19.
2015-11-09 13:08:38 +01:00
Jakub Rojek
f228cd173c Compilation error fix 2015-11-04 19:30:47 +01:00
Jakub Rojek
5db81053ef Menu Toolbar version 1.1 2015-11-04 19:25:04 +01:00
felixrojauro
85a611ed19 Adverts widget supports population from web and from local files. 2015-11-01 19:19:03 +01:00
felixrojauro
5a3b2dbce6 Adverts widget v0.2 added:
*Querying webAPI for adverts content;
*Starting browsers new tab with url specified in json file
*Basic QML items and models
*Overview tab layout changes
*Storing images on harddrive (temporary solution)
*Sending queries to webAPI straight from widget (temporary solution)
coming next:
-store whole json file as url/desription need to be stored for further use
-display images of adverts from QImage, not from file stored on harddrive
-hide/show adverts button tweaking
-proper webAPI base class for querying various servers for data (prypto for instance)

*
2015-10-30 01:51:54 +01:00
felixrojauro
1b0545c4e8 TestCommit 2015-10-29 23:08:10 +01:00
Andre Jochems
d044262ca4 Updated the OSX build properties 2014-08-06 21:42:21 +02:00
Ubuntu
f976d876e4 Recoverd deleted obj/placeholder.txt 2014-07-24 15:08:18 +02:00
Ubuntu
dc2dbbf716 Changes to enable cross-compilation on linux of both windows and linux binaries 2014-07-24 14:25:50 +02:00
salvatore giudice
4c7b8cb447 updated README with accurate hardfork block number 2014-07-18 16:52:49 +09:00
salvatore giudice
1deb085fa2 updated README.md 2014-07-18 15:44:05 +09:00
Salvatore Giudice
213e373b64 merge of casinocoin_1.3.0-uat into master 2014-07-17 23:36:12 -07:00
Salvatore Giudice
04474f996d added homebrew support patch to contrib for osx builds 2014-07-17 23:34:05 -07:00
qwerty55
6afd12465c incremented min proto version to facilitate hardfork 2014-07-17 05:04:20 -04:00
qwerty55
5ae4422402 reverted min proto version 2014-07-17 04:05:30 -04:00
qwerty55
c374d23f37 block height for subsidy reduction changed from 620000 to 577000 to allow for cut in 10 days 2014-07-17 03:35:50 -04:00
qwerty55
cc9e4439d6 resolved client version merge conflict 2014-07-17 03:18:25 -04:00
qwerty55
7300f8150a changed seed dns from casinoco.in to casinocoin.org; updated version number to 1.2.1 2014-06-16 21:18:47 -04:00
qwerty55
6fe7061421 update README.md to fix mailing lists header 2014-06-11 20:48:36 -04:00
qwerty55
ecd2ace6ae update README.md to include mailing lists 2014-06-11 20:47:22 -04:00
qwerty55
2ff46aa40b added upper boundary to block reward reduction to ensure 63 million coins maximum 2014-06-11 04:13:32 -04:00
qwerty55
f4d665abec updated README.md 2014-06-10 03:02:57 -04:00
qwerty55
c53af9e553 changed version to 1.3.0.0 in casinocoin-qt.pro 2014-06-10 02:59:27 -04:00
qwerty55
37e00791b2 incremented PROTOCOL_VERSION to 70004; missed this in last push 2014-06-10 01:04:58 -04:00
root
b597348e88 max coins changed to 63 million; permanent block reward reduction to 10 added in place of previous block reward halving scheme; PROTOCOL_VERSION and MIN_PEER_PROTO_VERSION incremented forward by 1 to facilitate hardfork; client version number incremented to 1.3.0 2014-06-10 00:46:26 -04:00
Viktor Kruug
27408f6304 Changed to be Linux friendly
Running through the qmake/make process will now look for the Linux paths instead of Windows paths.  Currently, this will build on Linux, but still references a lot of Windows paths.  Doing more research, one should be able to replace all paths with Linux-based paths that should also work under CYGWIN on Windows.
2014-05-20 12:33:53 -05:00
EmBi
6154ff7d30 Enabled disconnecting from old version nodes 2014-05-20 02:39:37 +02:00
EmBi
2447a9d633 Readme updated 2014-05-19 23:08:21 +02:00
EmBi
271e65e905 Readme updated 2014-05-19 23:07:05 +02:00
266 changed files with 33527 additions and 2586 deletions

6
.gitignore vendored
View File

@@ -2,13 +2,17 @@ src/*.exe
src/casinocoin src/casinocoin
src/casinocoind src/casinocoind
src/test_casinocoin src/test_casinocoin
src/obj/*
casinocoin-qt_plugin_import.cpp
object_script.casinocoin-qt.Debug
object_script.casinocoin-qt.Release
release/*
.*.swp .*.swp
*.*~* *.*~*
*.bak *.bak
*.rej *.rej
*.orig *.orig
*.o *.o
*.patch
.casinocoin .casinocoin
# Compilation and Qt preprocessor part # Compilation and Qt preprocessor part

20
COPYING
View File

@@ -1,20 +1,8 @@
Copyright (c) 2009-2013 Bitcoin Developers Copyright (c) 2009-2013 Bitcoin Developers
Copyright (c) 2011-2013 CasinoCoin Developers Copyright (c) 2011-2015 CasinoCoin Developers
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

1
DISCLAIMER Normal file
View File

@@ -0,0 +1 @@
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

23
QmlImports.qml Normal file
View File

@@ -0,0 +1,23 @@
import QtQuick 2.0
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
import QtQuick.Layouts 1.1
import QtQuick.Window 2.1
import QtQuick.Controls.Styles 1.2
/*
QmlImports.qml
Declaration of QML Imports required by project.
This is necessary if we want to keep qml files in a folder
separate from .pro file because of the way qmlimportscanner works.
If these imports are not declared, qmake will not recognize them,
and QtQuick will not be packaged with statically built apps and imported
at runtime.
This must be kept in the same directory as your .pro file
*/
QtObject {}

View File

@@ -1,4 +1,6 @@
<h2>Correct Wallet Version = 1.2.x</h2> <h2>Wallet 2.0.1.0 Release available</h2>
[Click here to download the most recent wallet version -> 2.0.1.0 (Updated on December, 11 2015)](https://github.com/casinocoin/casinocoin/releases/tag/2.0.1.0 "Click to go to releases page")
<p align="center"><img src="https://raw.github.com/transcoder/CasinoCoin/master/src/qt/res/images/logo.png" /></p> <p align="center"><img src="https://raw.github.com/transcoder/CasinoCoin/master/src/qt/res/images/logo.png" /></p>
CasinoCoin: An open source, peer-to-peer Internet currency specifically designed for online casino gaming. CasinoCoin: An open source, peer-to-peer Internet currency specifically designed for online casino gaming.
@@ -31,20 +33,28 @@ Technical Specifications
- scrypt proof-of-work algorithm - scrypt proof-of-work algorithm
- 30 second block time targets - 30 second block time targets
- ~336 million total coins - ~63 million total coins
- new digishield difficulty retargetting system (from block 445000) - new digishield difficulty retargetting system (from block 445000)
- 50 coins per block, halves every 3,153,600 blocks (~3 years) - 50 coins per block, permanent reduction to 10 coins per block after block 575000
- fair launch, absolutely no premine - fair launch, absolutely no premine
Casinocoin Mailing Lists
========================
If you operate a pool or service that relies on CasinoCoin wallets, please subscribe to the "CasinoCoin Development" mailing list for notifications of client updates, hardforks,or other issues that may impact you.
- CasinoCoin Development mailing list subscription form: http://eepurl.com/WGcoP
If you are a community mber interested in more general announcements related to Casinocoin, please subscribe to the "CasinoCoin Announcements" mailing list.
- CasinoCoin Announcements mailing list subscription form: http://eepurl.com/WGeu1
Links Links
====== ======
Website: http://casinocoin.org Website: https://casinocoin.org
Forum: http://forums.casinocoin.org
Source: https://github.com/casinocoin/casinocoin Source: https://github.com/casinocoin/casinocoin

440
casinocoin-qt-linux.pro Normal file
View File

@@ -0,0 +1,440 @@
TEMPLATE = app
TARGET = casinocoin-qt
VERSION = 3.0.0.0
INCLUDEPATH += src src/json src/qt
QT += core gui network widgets qml quick
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE USE_IPV6 __NO_SYSTEM_INCLUDES
CONFIG += no_include_pwd
CONFIG += thread
CONFIG += static
BOOST_LIB_SUFFIX=-mt
BOOST_INCLUDE_PATH=/home/ubuntu/deps/boost_1_60_0
BOOST_LIB_PATH=/home/ubuntu/deps/boost_1_60_0/stage/lib
BDB_INCLUDE_PATH=/home/ubuntu/deps/db-5.1.29.NC/build_unix
BDB_LIB_PATH=/home/ubuntu/deps/db-5.1.29.NC/build_unix
OPENSSL_INCLUDE_PATH=/home/ubuntu/deps/openssl-1.0.2g/include
OPENSSL_LIB_PATH=/home/ubuntu/deps/openssl-1.0.2g
MINIUPNPC_INCLUDE_PATH=/home/ubuntu/deps/miniupnpc-1.9
MINIUPNPC_LIB_PATH=/home/ubuntu/deps/miniupnpc-1.9
QRENCODE_INCLUDE_PATH=/home/ubuntu/deps/qrencode-3.4.4
QRENCODE_LIB_PATH=/home/ubuntu/deps/qrencode-3.4.4/.libs
OBJECTS_DIR = build
MOC_DIR = build
UI_DIR = build
# use: qmake "RELEASE=1"
contains(RELEASE, 1) {
# Linux: static link and extra security (see: https://wiki.debian.org/Hardening)
LIBS += -Wl,-Bstatic -Wl,-z,relro -Wl,-z,now
}
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
QMAKE_CXXFLAGS *= -fstack-protector-all
QMAKE_LFLAGS *= -fstack-protector-all
# for extra security (see: https://wiki.debian.org/Hardening): this flag is GCC compiler-specific
QMAKE_CXXFLAGS *= -D_FORTIFY_SOURCE=2
# use: qmake "USE_QRCODE=1"
# libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
contains(USE_QRCODE, 1) {
message(Building with QRCode support)
DEFINES += USE_QRCODE
#LIBS += -lqrencode
LIBS += -lqrencode $$join(QRENCODE_LIB_PATH,,-L,)
}
# use: qmake "USE_UPNP=1" ( enabled by default; default)
# or: qmake "USE_UPNP=0" (disabled by default)
# or: qmake "USE_UPNP=-" (not supported)
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
contains(USE_UPNP, -) {
message(Building without UPNP support)
} else {
message(Building with UPNP support)
count(USE_UPNP, 0) {
USE_UPNP=1
}
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
}
# use: qmake "USE_DBUS=1"
contains(USE_DBUS, 1) {
message(Building with DBUS (Freedesktop notifications) support)
DEFINES += USE_DBUS
QT += dbus
}
# use: qmake "USE_IPV6=1" ( enabled by default; default)
# or: qmake "USE_IPV6=0" (disabled by default)
# or: qmake "USE_IPV6=-" (not supported)
contains(USE_IPV6, -) {
message(Building without IPv6 support)
} else {
count(USE_IPV6, 0) {
USE_IPV6=1
}
DEFINES += USE_IPV6=$$USE_IPV6
}
contains(BITCOIN_NEED_QT_PLUGINS, 1) {
DEFINES += BITCOIN_NEED_QT_PLUGINS
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
}
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
genleveldb.depends = FORCE
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
QMAKE_EXTRA_TARGETS += genleveldb
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
# regenerate src/build.h
genbuild.depends = FORCE
genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h
genbuild.target = $$OUT_PWD/build/build.h
PRE_TARGETDEPS += $$OUT_PWD/build/build.h
QMAKE_EXTRA_TARGETS += genbuild
DEFINES += HAVE_BUILD_INFO
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-strict-aliasing -Wstack-protector
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedefs
##### Start Project Files #####
DEPENDPATH += src src/json src/qt
HEADERS += src/qt/bitcoingui.h \
src/qt/transactiontablemodel.h \
src/qt/addresstablemodel.h \
src/qt/optionsdialog.h \
src/qt/sendcoinsdialog.h \
src/qt/coincontroldialog.h \
src/qt/coincontroltreewidget.h \
src/qt/addressbookpage.h \
src/qt/signverifymessagedialog.h \
src/qt/aboutdialog.h \
src/qt/editaddressdialog.h \
src/qt/bitcoinaddressvalidator.h \
src/alert.h \
src/addrman.h \
src/base58.h \
src/bignum.h \
src/checkpoints.h \
src/coincontrol.h \
src/compat.h \
src/sync.h \
src/util.h \
src/hash.h \
src/uint256.h \
src/serialize.h \
src/main.h \
src/net.h \
src/key.h \
src/db.h \
src/walletdb.h \
src/script.h \
src/init.h \
src/bloom.h \
src/mruset.h \
src/checkqueue.h \
src/json/json_spirit_writer_template.h \
src/json/json_spirit_writer.h \
src/json/json_spirit_value.h \
src/json/json_spirit_utils.h \
src/json/json_spirit_stream_reader.h \
src/json/json_spirit_reader_template.h \
src/json/json_spirit_reader.h \
src/json/json_spirit_error_position.h \
src/json/json_spirit.h \
src/qt/clientmodel.h \
src/qt/guiutil.h \
src/qt/transactionrecord.h \
src/qt/guiconstants.h \
src/qt/optionsmodel.h \
src/qt/monitoreddatamapper.h \
src/qt/transactiondesc.h \
src/qt/transactiondescdialog.h \
src/qt/bitcoinamountfield.h \
src/wallet.h \
src/keystore.h \
src/qt/transactionfilterproxy.h \
src/qt/transactionview.h \
src/qt/walletmodel.h \
src/qt/walletview.h \
src/qt/walletstack.h \
src/qt/walletframe.h \
src/bitcoinrpc.h \
src/qt/overviewpage.h \
src/qt/csvmodelwriter.h \
src/crypter.h \
src/qt/sendcoinsentry.h \
src/qt/qvalidatedlineedit.h \
src/qt/bitcoinunits.h \
src/qt/qvaluecombobox.h \
src/qt/askpassphrasedialog.h \
src/protocol.h \
src/qt/notificator.h \
src/qt/paymentserver.h \
src/allocators.h \
src/ui_interface.h \
src/qt/rpcconsole.h \
src/scrypt.h \
src/version.h \
src/netbase.h \
src/clientversion.h \
src/txdb.h \
src/leveldb.h \
src/threadsafety.h \
src/limitedmap.h \
src/qt/macnotificationhandler.h \
src/qt/splashscreen.h \
src/qt/CSCPublicAPI/casinocoinwebapi.h \
src/qt/CSCPublicAPI/casinocoinwebapiparser.h \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.h \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.h \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.h \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.h \
src/qt/qtquick_controls/cpp/guibannercontrol.h \
src/qt/qtquick_controls/cpp/guibannerlistview.h \
src/qt/qtquick_controls/cpp/guibannerwidget.h \
src/qt/qtquick_controls/cpp/listiteminterface.h \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.h \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.h \
src/qt/qtquick_controls/cpp/qmlimageprovider.h \
src/qt/qtquick_controls/cpp/qmllistitem.h \
src/qt/qtquick_controls/cpp/qmllistmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.h \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.h \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.h \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.h \
src/qt/gui20_skin.h \
src/qt/cscfusionstyle.h \
src/qt/pryptopage.h \
src/qt/currencies.h \
src/qt/CSCPublicAPI/jsoncoininfoparser.h \
src/qt/infopage.h \
src/qt/qtquick_controls/cpp/guiexchangeswidget.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.h \
src/qt/qtquick_controls/cpp/guiexchangeslistview.h \
src/qt/qtquick_controls/cpp/guiexchangescontrol.h \
src/qt/twitter/twitterwidget.h
SOURCES += src/qt/bitcoin.cpp \
src/qt/bitcoingui.cpp \
src/qt/transactiontablemodel.cpp \
src/qt/addresstablemodel.cpp \
src/qt/optionsdialog.cpp \
src/qt/sendcoinsdialog.cpp \
src/qt/coincontroldialog.cpp \
src/qt/coincontroltreewidget.cpp \
src/qt/addressbookpage.cpp \
src/qt/signverifymessagedialog.cpp \
src/qt/aboutdialog.cpp \
src/qt/editaddressdialog.cpp \
src/qt/bitcoinaddressvalidator.cpp \
src/alert.cpp \
src/version.cpp \
src/sync.cpp \
src/util.cpp \
src/hash.cpp \
src/netbase.cpp \
src/key.cpp \
src/script.cpp \
src/main.cpp \
src/init.cpp \
src/net.cpp \
src/bloom.cpp \
src/checkpoints.cpp \
src/addrman.cpp \
src/db.cpp \
src/walletdb.cpp \
src/qt/clientmodel.cpp \
src/qt/guiutil.cpp \
src/qt/transactionrecord.cpp \
src/qt/optionsmodel.cpp \
src/qt/monitoreddatamapper.cpp \
src/qt/transactiondesc.cpp \
src/qt/transactiondescdialog.cpp \
src/qt/bitcoinstrings.cpp \
src/qt/bitcoinamountfield.cpp \
src/wallet.cpp \
src/keystore.cpp \
src/qt/transactionfilterproxy.cpp \
src/qt/transactionview.cpp \
src/qt/walletmodel.cpp \
src/qt/walletview.cpp \
src/qt/walletstack.cpp \
src/qt/walletframe.cpp \
src/bitcoinrpc.cpp \
src/rpcdump.cpp \
src/rpcnet.cpp \
src/rpcmining.cpp \
src/rpcwallet.cpp \
src/rpcblockchain.cpp \
src/rpcrawtransaction.cpp \
src/qt/overviewpage.cpp \
src/qt/csvmodelwriter.cpp \
src/crypter.cpp \
src/qt/sendcoinsentry.cpp \
src/qt/qvalidatedlineedit.cpp \
src/qt/bitcoinunits.cpp \
src/qt/qvaluecombobox.cpp \
src/qt/askpassphrasedialog.cpp \
src/protocol.cpp \
src/qt/notificator.cpp \
src/qt/paymentserver.cpp \
src/qt/rpcconsole.cpp \
src/scrypt.cpp \
src/noui.cpp \
src/leveldb.cpp \
src/txdb.cpp \
src/qt/splashscreen.cpp \
src/qt/CSCPublicAPI/casinocoinwebapi.cpp \
src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.cpp \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.cpp \
src/qt/qtquick_controls/cpp/guibannercontrol.cpp \
src/qt/qtquick_controls/cpp/guibannerlistview.cpp \
src/qt/qtquick_controls/cpp/guibannerwidget.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlimageprovider.cpp \
src/qt/qtquick_controls/cpp/qmllistitem.cpp \
src/qt/qtquick_controls/cpp/qmllistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.cpp \
src/qt/gui20_skin.cpp \
src/qt/cscfusionstyle.cpp \
src/qt/pryptopage.cpp \
src/qt/currencies.cpp \
src/qt/CSCPublicAPI/jsoncoininfoparser.cpp \
src/qt/infopage.cpp \
src/qt/qtquick_controls/cpp/guiexchangeswidget.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.cpp \
src/qt/qtquick_controls/cpp/guiexchangeslistview.cpp \
src/qt/qtquick_controls/cpp/guiexchangescontrol.cpp \
src/qt/twitter/twitterwidget.cpp
RESOURCES += src/qt/bitcoin.qrc
FORMS += src/qt/forms/sendcoinsdialog.ui \
src/qt/forms/coincontroldialog.ui \
src/qt/forms/addressbookpage.ui \
src/qt/forms/signverifymessagedialog.ui \
src/qt/forms/aboutdialog.ui \
src/qt/forms/editaddressdialog.ui \
src/qt/forms/transactiondescdialog.ui \
src/qt/forms/overviewpage.ui \
src/qt/forms/sendcoinsentry.ui \
src/qt/forms/askpassphrasedialog.ui \
src/qt/forms/rpcconsole.ui \
src/qt/forms/optionsdialog.ui \
src/qt/forms/pryptopage.ui \
src/qt/forms/infopage.ui
OTHER_FILES += README.md \
doc/*.rst \
doc/*.txt \
doc/*.md \
src/qt/res/bitcoin-qt.rc \
src/test/*.cpp \
src/test/*.h \
src/qt/test/*.cpp \
src/qt/test/*.h \
src/qt/qtquick_controls/qml/QmlGUIBannerControl.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesControl.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesListView.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarListView.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarControl.qml \
src/qt/twitter/*.qml
DISTFILES += \
QmlImports.qml
##### End Project Files #####
contains(USE_QRCODE, 1) {
HEADERS += src/qt/qrcodedialog.h
SOURCES += src/qt/qrcodedialog.cpp
FORMS += src/qt/forms/qrcodedialog.ui
}
contains(BITCOIN_QT_TEST, 1) {
SOURCES += src/qt/test/test_main.cpp \
src/qt/test/uritests.cpp
HEADERS += src/qt/test/uritests.h
DEPENDPATH += src/qt/test
QT += testlib
TARGET = casinocoin-qt_test
DEFINES += BITCOIN_QT_TEST
}
contains(USE_SSE2, 1) {
DEFINES += USE_SSE2
gccsse2.input = SOURCES_SSE2
gccsse2.output = $$PWD/build/${QMAKE_FILE_BASE}.o
gccsse2.commands = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -msse2 -mstackrealign
QMAKE_EXTRA_COMPILERS += gccsse2
SOURCES_SSE2 += src/scrypt-sse2.cpp
}
# for lrelease/lupdate
# also add new translations to src/qt/bitcoin.qrc under translations/
TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts)
isEmpty(QMAKE_LRELEASE) {
QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
}
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
# automatically build translations, so they can be included in resource file
TSQM.name = lrelease ${QMAKE_FILE_IN}
TSQM.input = TRANSLATIONS
TSQM.output = $$QM_DIR/${QMAKE_FILE_BASE}.qm
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
TSQM.CONFIG = no_link
QMAKE_EXTRA_COMPILERS += TSQM
isEmpty(BOOST_THREAD_LIB_SUFFIX) {
BOOST_THREAD_LIB_SUFFIX = $$BOOST_LIB_SUFFIX
}
DEFINES += LINUX
LIBS += -lrt
# _FILE_OFFSET_BITS=64 lets 32-bit fopen transparently support large files.
DEFINES += _FILE_OFFSET_BITS=64
# Set libraries and includes at end, to use platform-defined defaults if not overridden
INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH $$QRENCODE_INCLUDE_PATH
LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,)
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX -lpthread
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX
contains(RELEASE, 1) {
# Linux: turn dynamic linking back on for c/c++ runtime libraries
LIBS += -Wl,-Bdynamic
}
system($$QMAKE_LRELEASE -silent $$TRANSLATIONS)

View File

@@ -0,0 +1,538 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.6.1, 2016-06-15T17:48:36. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{af9fddb2-7bcb-4144-bdf3-55c932c19fe1}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap"/>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.5.1 Static (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.6 Static (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{86a38728-97f7-49ac-b7f5-0ca2720c2f29}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/ubuntu/casinocoin-3.0.0.0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">USE_UPNP=- USE_QRCODE=1 USE_IPV6=1</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/ubuntu/casinocoin-3.0.0.0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">USE_UPNP=0 USE_QRCODE=1 USE_IPV6=1</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">casinocoin-qt-linux</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/ubuntu/casinocoin-3.0.0.0/casinocoin-qt-linux.pro</value>
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">casinocoin-qt-linux.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.6.0 GCC 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.6.0 GCC 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.56.gcc_64_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/ubuntu/casinocoin-3.0.0.0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/ubuntu/casinocoin-3.0.0.0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">USE_UPNP=0 USE_QRCODE=1 USE_IPV6=1</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/ubuntu/build-casinocoin-qt-linux-Desktop_Qt_5_6_0_GCC_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">casinocoin-qt-linux</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/ubuntu/casinocoin-3.0.0.0/casinocoin-qt-linux.pro</value>
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">casinocoin-qt-linux.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">18</value>
</data>
<data>
<variable>Version</variable>
<value type="int">18</value>
</data>
</qtcreator>

457
casinocoin-qt-osx.pro Normal file
View File

@@ -0,0 +1,457 @@
TEMPLATE = app
TARGET = "CasinoCoin-Qt"
VERSION = 3.0.0.0
INCLUDEPATH += src src/json src/qt
QT += core gui network widgets qml quick
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE USE_IPV6 __NO_SYSTEM_INCLUDES
CONFIG += no_include_pwd
CONFIG += thread
CONFIG += c++11
# For OSX Qt5.6 Static, Boost and BerkeleyDB must be compiled from source
#
# Qt5.6 Static
# -----------
# cd Qt56/5.6/Src
# ./configure -debug-and-release -opensource -confirm-license -platform macx-clang -opengl desktop -static -nomake examples -prefix $HOME/Qt56/static/5.6 -I /usr/local/Cellar/openssl/1.0.2h_1/include -L /usr/local/Cellar/openssl/1.0.2h_1/lib -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -no-nis -no-cups
# make -j8
# make install
#
# Berkeley DB 5.1.29
# ----------------
# wget http://download.oracle.com/berkeley-db/db-5.1.29.NC.tar.gz
# tar xvzf db-5.1.29.NC.tar.gz
# cd db-5.1.29.NC/build_unix
# ../dist/configure --enable-cxx --disable-shared --disable-replication --disable-atomicsupport
# make
# sudo make install
#
# Boost 1.60
# -----------
# wget http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz
# tar xvzf boost_1_60_0.tar.gz
# cd boost_1_60_0
# ./bootstrap.sh
# ./b2 link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-system --with-thread --with-serialization
# cd ..
# cp -R boost_1_60_0 /usr/local
BOOST_LIB_SUFFIX =
BOOST_THREAD_LIB_SUFFIX =
BOOST_INCLUDE_PATH=/usr/local/boost_1_60_0
BOOST_LIB_PATH=/usr/local/boost_1_60_0/stage/lib
BDB_INCLUDE_PATH=/usr/local/BerkeleyDB.5.1/include
BDB_LIB_PATH=/usr/local/BerkeleyDB.5.1/lib
BDB_LIB_SUFFIX = -5.1
OPENSSL_INCLUDE_PATH=/usr/local/Cellar/openssl/1.0.2h_1/include
OPENSSL_LIB_PATH=/usr/local/Cellar/openssl/1.0.2h_1/lib
MINIUPNPC_INCLUDE_PATH=/usr/local/opt/miniupnpc/include
MINIUPNPC_LIB_PATH=/usr/local/opt/miniupnpc/lib
QRENCODE_INCLUDE_PATH=/usr/local/opt/qrencode/include
QRENCODE_LIB_PATH=/usr/local/opt/qrencode/lib
OBJECTS_DIR = build
MOC_DIR = build
UI_DIR = build
# Mac: compile for version (10.9, 64-bit)
#QMAKE_CXXFLAGS += -mmacosx-version-min=10.7 -arch x86_64 -isysroot $HOME/MacOSX-SDKs/MacOSX10.11.sdk
#QMAKE_CFLAGS += -mmacosx-version-min=10.7 -arch x86_64 -isysroot $HOME/MacOSX-SDKs/MacOSX10.11.sdk
#QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.7 -arch x86_64 -isysroot $HOME/MacOSX-SDKs/MacOSX10.11.sdk
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
#QMAKE_CXXFLAGS += -stdlib=libstdc++ -DBOOST_HAS_INT128=1
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
QMAKE_CXXFLAGS *= -fstack-protector-all
QMAKE_LFLAGS *= -fstack-protector-all -headerpad_max_install_names
# for extra security (see: https://wiki.debian.org/Hardening): this flag is GCC compiler-specific
QMAKE_CXXFLAGS *= -D_FORTIFY_SOURCE=2
# use: qmake "USE_QRCODE=1"
# libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
contains(USE_QRCODE, 1) {
message(Building with QRCode support)
DEFINES += USE_QRCODE
#LIBS += -lqrencode
LIBS += -lqrencode $$join(QRENCODE_LIB_PATH,,-L,)
}
# use: qmake "USE_UPNP=1" ( enabled by default; default)
# or: qmake "USE_UPNP=0" (disabled by default)
# or: qmake "USE_UPNP=-" (not supported)
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
contains(USE_UPNP, -) {
message(Building without UPNP support)
} else {
message(Building with UPNP support)
count(USE_UPNP, 0) {
USE_UPNP=1
}
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
}
# use: qmake "USE_DBUS=1"
contains(USE_DBUS, 1) {
message(Building with DBUS (Freedesktop notifications) support)
DEFINES += USE_DBUS
QT += dbus
}
# use: qmake "USE_IPV6=1" ( enabled by default; default)
# or: qmake "USE_IPV6=0" (disabled by default)
# or: qmake "USE_IPV6=-" (not supported)
contains(USE_IPV6, -) {
message(Building without IPv6 support)
} else {
count(USE_IPV6, 0) {
USE_IPV6=1
}
DEFINES += USE_IPV6=$$USE_IPV6
}
contains(BITCOIN_NEED_QT_PLUGINS, 1) {
DEFINES += BITCOIN_NEED_QT_PLUGINS
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
}
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
genleveldb.depends = FORCE
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
QMAKE_EXTRA_TARGETS += genleveldb
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
# regenerate src/build.h
contains(USE_BUILD_INFO, 1) {
genbuild.depends = FORCE
genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h
genbuild.target = $$OUT_PWD/build/build.h
PRE_TARGETDEPS += $$OUT_PWD/build/build.h
QMAKE_EXTRA_TARGETS += genbuild
DEFINES += HAVE_BUILD_INFO
}
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-strict-aliasing -Wstack-protector -Wno-unused-local-typedefs
##### Start Project Files #####
DEPENDPATH += src src/json src/qt
HEADERS += src/qt/bitcoingui.h \
src/qt/transactiontablemodel.h \
src/qt/addresstablemodel.h \
src/qt/optionsdialog.h \
src/qt/sendcoinsdialog.h \
src/qt/coincontroldialog.h \
src/qt/coincontroltreewidget.h \
src/qt/addressbookpage.h \
src/qt/signverifymessagedialog.h \
src/qt/aboutdialog.h \
src/qt/editaddressdialog.h \
src/qt/bitcoinaddressvalidator.h \
src/alert.h \
src/addrman.h \
src/base58.h \
src/bignum.h \
src/checkpoints.h \
src/coincontrol.h \
src/compat.h \
src/sync.h \
src/util.h \
src/hash.h \
src/uint256.h \
src/serialize.h \
src/main.h \
src/net.h \
src/key.h \
src/db.h \
src/walletdb.h \
src/script.h \
src/init.h \
src/bloom.h \
src/mruset.h \
src/checkqueue.h \
src/json/json_spirit_writer_template.h \
src/json/json_spirit_writer.h \
src/json/json_spirit_value.h \
src/json/json_spirit_utils.h \
src/json/json_spirit_stream_reader.h \
src/json/json_spirit_reader_template.h \
src/json/json_spirit_reader.h \
src/json/json_spirit_error_position.h \
src/json/json_spirit.h \
src/qt/clientmodel.h \
src/qt/guiutil.h \
src/qt/transactionrecord.h \
src/qt/guiconstants.h \
src/qt/optionsmodel.h \
src/qt/monitoreddatamapper.h \
src/qt/transactiondesc.h \
src/qt/transactiondescdialog.h \
src/qt/bitcoinamountfield.h \
src/wallet.h \
src/keystore.h \
src/qt/transactionfilterproxy.h \
src/qt/transactionview.h \
src/qt/walletmodel.h \
src/qt/walletview.h \
src/qt/walletstack.h \
src/qt/walletframe.h \
src/bitcoinrpc.h \
src/qt/overviewpage.h \
src/qt/csvmodelwriter.h \
src/crypter.h \
src/qt/sendcoinsentry.h \
src/qt/qvalidatedlineedit.h \
src/qt/bitcoinunits.h \
src/qt/qvaluecombobox.h \
src/qt/askpassphrasedialog.h \
src/protocol.h \
src/qt/notificator.h \
src/qt/paymentserver.h \
src/allocators.h \
src/ui_interface.h \
src/qt/rpcconsole.h \
src/scrypt.h \
src/version.h \
src/netbase.h \
src/clientversion.h \
src/txdb.h \
src/leveldb.h \
src/threadsafety.h \
src/limitedmap.h \
src/qt/macnotificationhandler.h \
src/qt/splashscreen.h \
src/qt/CSCPublicAPI/casinocoinwebapi.h \
src/qt/CSCPublicAPI/casinocoinwebapiparser.h \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.h \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.h \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.h \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.h \
src/qt/qtquick_controls/cpp/guibannercontrol.h \
src/qt/qtquick_controls/cpp/guibannerlistview.h \
src/qt/qtquick_controls/cpp/guibannerwidget.h \
src/qt/qtquick_controls/cpp/listiteminterface.h \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.h \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.h \
src/qt/qtquick_controls/cpp/qmlimageprovider.h \
src/qt/qtquick_controls/cpp/qmllistitem.h \
src/qt/qtquick_controls/cpp/qmllistmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.h \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.h \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.h \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.h \
src/qt/gui20_skin.h \
src/qt/cscfusionstyle.h \
src/qt/pryptopage.h \
src/qt/currencies.h \
src/qt/CSCPublicAPI/jsoncoininfoparser.h \
src/qt/infopage.h \
src/qt/qtquick_controls/cpp/guiexchangeswidget.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.h \
src/qt/qtquick_controls/cpp/guiexchangeslistview.h \
src/qt/qtquick_controls/cpp/guiexchangescontrol.h \
src/qt/twitter/twitterwidget.h
SOURCES += src/qt/bitcoin.cpp \
src/qt/bitcoingui.cpp \
src/qt/transactiontablemodel.cpp \
src/qt/addresstablemodel.cpp \
src/qt/optionsdialog.cpp \
src/qt/sendcoinsdialog.cpp \
src/qt/coincontroldialog.cpp \
src/qt/coincontroltreewidget.cpp \
src/qt/addressbookpage.cpp \
src/qt/signverifymessagedialog.cpp \
src/qt/aboutdialog.cpp \
src/qt/editaddressdialog.cpp \
src/qt/bitcoinaddressvalidator.cpp \
src/alert.cpp \
src/version.cpp \
src/sync.cpp \
src/util.cpp \
src/hash.cpp \
src/netbase.cpp \
src/key.cpp \
src/script.cpp \
src/main.cpp \
src/init.cpp \
src/net.cpp \
src/bloom.cpp \
src/checkpoints.cpp \
src/addrman.cpp \
src/db.cpp \
src/walletdb.cpp \
src/qt/clientmodel.cpp \
src/qt/guiutil.cpp \
src/qt/transactionrecord.cpp \
src/qt/optionsmodel.cpp \
src/qt/monitoreddatamapper.cpp \
src/qt/transactiondesc.cpp \
src/qt/transactiondescdialog.cpp \
src/qt/bitcoinstrings.cpp \
src/qt/bitcoinamountfield.cpp \
src/wallet.cpp \
src/keystore.cpp \
src/qt/transactionfilterproxy.cpp \
src/qt/transactionview.cpp \
src/qt/walletmodel.cpp \
src/qt/walletview.cpp \
src/qt/walletstack.cpp \
src/qt/walletframe.cpp \
src/bitcoinrpc.cpp \
src/rpcdump.cpp \
src/rpcnet.cpp \
src/rpcmining.cpp \
src/rpcwallet.cpp \
src/rpcblockchain.cpp \
src/rpcrawtransaction.cpp \
src/qt/overviewpage.cpp \
src/qt/csvmodelwriter.cpp \
src/crypter.cpp \
src/qt/sendcoinsentry.cpp \
src/qt/qvalidatedlineedit.cpp \
src/qt/bitcoinunits.cpp \
src/qt/qvaluecombobox.cpp \
src/qt/askpassphrasedialog.cpp \
src/protocol.cpp \
src/qt/notificator.cpp \
src/qt/paymentserver.cpp \
src/qt/rpcconsole.cpp \
src/scrypt.cpp \
src/noui.cpp \
src/leveldb.cpp \
src/txdb.cpp \
src/qt/splashscreen.cpp \
src/qt/CSCPublicAPI/casinocoinwebapi.cpp \
src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.cpp \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.cpp \
src/qt/qtquick_controls/cpp/guibannercontrol.cpp \
src/qt/qtquick_controls/cpp/guibannerlistview.cpp \
src/qt/qtquick_controls/cpp/guibannerwidget.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlimageprovider.cpp \
src/qt/qtquick_controls/cpp/qmllistitem.cpp \
src/qt/qtquick_controls/cpp/qmllistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.cpp \
src/qt/gui20_skin.cpp \
src/qt/cscfusionstyle.cpp \
src/qt/pryptopage.cpp \
src/qt/currencies.cpp \
src/qt/CSCPublicAPI/jsoncoininfoparser.cpp \
src/qt/infopage.cpp \
src/qt/qtquick_controls/cpp/guiexchangeswidget.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.cpp \
src/qt/qtquick_controls/cpp/guiexchangeslistview.cpp \
src/qt/qtquick_controls/cpp/guiexchangescontrol.cpp \
src/qt/twitter/twitterwidget.cpp
RESOURCES += src/qt/bitcoin.qrc
FORMS += src/qt/forms/sendcoinsdialog.ui \
src/qt/forms/coincontroldialog.ui \
src/qt/forms/addressbookpage.ui \
src/qt/forms/signverifymessagedialog.ui \
src/qt/forms/aboutdialog.ui \
src/qt/forms/editaddressdialog.ui \
src/qt/forms/transactiondescdialog.ui \
src/qt/forms/overviewpage.ui \
src/qt/forms/sendcoinsentry.ui \
src/qt/forms/askpassphrasedialog.ui \
src/qt/forms/rpcconsole.ui \
src/qt/forms/optionsdialog.ui \
src/qt/forms/pryptopage.ui \
src/qt/forms/infopage.ui
OTHER_FILES += README.md \
doc/*.rst \
doc/*.txt \
doc/*.md \
src/qt/res/bitcoin-qt.rc \
src/qt/qtquick_controls/qml/QmlGUIBannerControl.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesControl.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesListView.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarListView.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarControl.qml \
src/qt/twitter/*.qml
DISTFILES += \
QmlImports.qml
##### End Project Files #####
contains(USE_QRCODE, 1) {
HEADERS += src/qt/qrcodedialog.h
SOURCES += src/qt/qrcodedialog.cpp
FORMS += src/qt/forms/qrcodedialog.ui
}
contains(USE_SSE2, 1) {
DEFINES += USE_SSE2
gccsse2.input = SOURCES_SSE2
gccsse2.output = $$PWD/build/${QMAKE_FILE_BASE}.o
gccsse2.commands = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -msse2 -mstackrealign
QMAKE_EXTRA_COMPILERS += gccsse2
SOURCES_SSE2 += src/scrypt-sse2.cpp
}
# Todo: Remove this line when switching to Qt5, as that option was removed
CODECFORTR = UTF-8
# for lrelease/lupdate
# also add new translations to src/qt/bitcoin.qrc under translations/
TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts)
isEmpty(QMAKE_LRELEASE) {
# win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
# else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
}
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
# automatically build translations, so they can be included in resource file
TSQM.name = lrelease ${QMAKE_FILE_IN}
TSQM.input = TRANSLATIONS
TSQM.output = $$QM_DIR/${QMAKE_FILE_BASE}.qm
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
TSQM.CONFIG = no_link
QMAKE_EXTRA_COMPILERS += TSQM
HEADERS += src/qt/macdockiconhandler.h src/qt/macnotificationhandler.h
OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm src/qt/macnotificationhandler.mm
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit -framework CoreServices
DEFINES += MAC_OSX MSG_NOSIGNAL=0
ICON = src/qt/res/icons/casinocoin.icns
#QMAKE_CFLAGS_THREAD += -pthread
#QMAKE_LFLAGS_THREAD += -pthread
#QMAKE_CXXFLAGS_THREAD += -pthread
QMAKE_INFO_PLIST = share/qt/Info.plist
# Set libraries and includes at end, to use platform-defined defaults if not overridden
INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH $$QRENCODE_INCLUDE_PATH
LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,)
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX -lpthread
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX
LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
LIBS += -dead_strip
system($$QMAKE_LRELEASE -silent $$TRANSLATIONS)

437
casinocoin-qt-windows.pro Normal file
View File

@@ -0,0 +1,437 @@
TEMPLATE = app
TARGET = casinocoin-qt
VERSION = 3.0.0.0
INCLUDEPATH += src src/json src/qt
QT += core gui network widgets qml quick
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE USE_IPV6
CONFIG += no_include_pwd
CONFIG += thread
# Build boost:
# .\b2 toolset=gcc address-model=32 define=BOOST_USE_WINAPI_VERSION=0x0600 variant=release link=static threading=multi runtime-link=static --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread stage
# define=BOOST_USE_WINAPI_VERSION=0x0600
BOOST_LIB_SUFFIX=-mt
BOOST_LIB_PATH=C:/msys64/usr/src/deps32/boost_1_60_0/stage/lib
BOOST_INCLUDE_PATH=C:/msys64/usr/src/deps32/boost_1_60_0
BDB_INCLUDE_PATH=C:/msys64/usr/src/deps32/db-4.8.30.NC/build_unix
BDB_LIB_PATH=C:/msys64/usr/src/deps32/db-4.8.30.NC/build_unix
BDB_LIB_SUFFIX=-4.8
OPENSSL_INCLUDE_PATH=C:/msys64/usr/src/deps32/openssl-1.0.2g/include
OPENSSL_LIB_PATH=C:/msys64/usr/src/deps32/openssl-1.0.2g
MINIUPNPC_INCLUDE_PATH=C:/msys64/usr/src/deps32/miniupnpc-1.9/include
MINIUPNPC_LIB_PATH=C:/msys64/usr/src/deps32/miniupnpc-1.9
QRENCODE_INCLUDE_PATH=C:/msys64/usr/src/deps32/qrencode-3.4.4
QRENCODE_LIB_PATH=C:/msys64/usr/src/deps32/qrencode-3.4.4/.libs
OBJECTS_DIR = build
MOC_DIR = build
UI_DIR = build
# use: qmake "USE_QRCODE=1"
# libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
contains(USE_QRCODE, 1) {
message(Building with QRCode support)
DEFINES += USE_QRCODE
#LIBS += -lqrencode
LIBS += -lqrencode $$join(QRENCODE_LIB_PATH,,-L,)
}
# use: qmake "USE_UPNP=1" ( enabled by default; default)
# or: qmake "USE_UPNP=0" (disabled by default)
# or: qmake "USE_UPNP=-" (not supported)
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
contains(USE_UPNP, -) {
message(Building without UPNP support)
} else {
message(Building with UPNP support)
count(USE_UPNP, 0) {
USE_UPNP=1
}
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
LIBS += -liphlpapi
}
# use: qmake "USE_DBUS=1"
contains(USE_DBUS, 1) {
message(Building with DBUS (Freedesktop notifications) support)
DEFINES += USE_DBUS
QT += dbus
}
# use: qmake "USE_IPV6=1" ( enabled by default; default)
# or: qmake "USE_IPV6=0" (disabled by default)
# or: qmake "USE_IPV6=-" (not supported)
contains(USE_IPV6, -) {
message(Building without IPv6 support)
} else {
count(USE_IPV6, 0) {
USE_IPV6=1
}
DEFINES += USE_IPV6=$$USE_IPV6
}
contains(BITCOIN_NEED_QT_PLUGINS, 1) {
DEFINES += BITCOIN_NEED_QT_PLUGINS
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
}
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
# make an educated guess about what the ranlib command is called
isEmpty(QMAKE_RANLIB) {
QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
}
LIBS += -lshlwapi
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
genleveldb.depends = FORCE
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
QMAKE_EXTRA_TARGETS += genleveldb
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
# On windows manually execute: make TARGET_OS=OS_WINDOWS_CROSSCOMPILE libleveldb.a libmemenv.a
QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a;
# regenerate src/build.h
contains(USE_BUILD_INFO, 1) {
genbuild.depends = FORCE
genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h
genbuild.target = $$OUT_PWD/build/build.h
PRE_TARGETDEPS += $$OUT_PWD/build/build.h
QMAKE_EXTRA_TARGETS += genbuild
DEFINES += HAVE_BUILD_INFO
}
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-unused -Wno-strict-aliasing -Wstack-protector -Wno-maybe-uninitialized
##### Start Project Files #####
DEPENDPATH += src src/json src/qt
HEADERS += src/qt/bitcoingui.h \
src/qt/transactiontablemodel.h \
src/qt/addresstablemodel.h \
src/qt/optionsdialog.h \
src/qt/sendcoinsdialog.h \
src/qt/coincontroldialog.h \
src/qt/coincontroltreewidget.h \
src/qt/addressbookpage.h \
src/qt/signverifymessagedialog.h \
src/qt/aboutdialog.h \
src/qt/editaddressdialog.h \
src/qt/bitcoinaddressvalidator.h \
src/alert.h \
src/addrman.h \
src/base58.h \
src/bignum.h \
src/checkpoints.h \
src/coincontrol.h \
src/compat.h \
src/sync.h \
src/util.h \
src/hash.h \
src/uint256.h \
src/serialize.h \
src/main.h \
src/net.h \
src/key.h \
src/db.h \
src/walletdb.h \
src/script.h \
src/init.h \
src/bloom.h \
src/mruset.h \
src/checkqueue.h \
src/json/json_spirit_writer_template.h \
src/json/json_spirit_writer.h \
src/json/json_spirit_value.h \
src/json/json_spirit_utils.h \
src/json/json_spirit_stream_reader.h \
src/json/json_spirit_reader_template.h \
src/json/json_spirit_reader.h \
src/json/json_spirit_error_position.h \
src/json/json_spirit.h \
src/qt/clientmodel.h \
src/qt/guiutil.h \
src/qt/transactionrecord.h \
src/qt/guiconstants.h \
src/qt/optionsmodel.h \
src/qt/monitoreddatamapper.h \
src/qt/transactiondesc.h \
src/qt/transactiondescdialog.h \
src/qt/bitcoinamountfield.h \
src/wallet.h \
src/keystore.h \
src/qt/transactionfilterproxy.h \
src/qt/transactionview.h \
src/qt/walletmodel.h \
src/qt/walletview.h \
src/qt/walletstack.h \
src/qt/walletframe.h \
src/bitcoinrpc.h \
src/qt/overviewpage.h \
src/qt/csvmodelwriter.h \
src/crypter.h \
src/qt/sendcoinsentry.h \
src/qt/qvalidatedlineedit.h \
src/qt/bitcoinunits.h \
src/qt/qvaluecombobox.h \
src/qt/askpassphrasedialog.h \
src/protocol.h \
src/qt/notificator.h \
src/qt/paymentserver.h \
src/allocators.h \
src/ui_interface.h \
src/qt/rpcconsole.h \
src/scrypt.h \
src/version.h \
src/netbase.h \
src/clientversion.h \
src/txdb.h \
src/leveldb.h \
src/threadsafety.h \
src/limitedmap.h \
src/qt/macnotificationhandler.h \
src/qt/splashscreen.h \
src/qt/CSCPublicAPI/casinocoinwebapi.h \
src/qt/CSCPublicAPI/casinocoinwebapiparser.h \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.h \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.h \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.h \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.h \
src/qt/qtquick_controls/cpp/guibannercontrol.h \
src/qt/qtquick_controls/cpp/guibannerlistview.h \
src/qt/qtquick_controls/cpp/guibannerwidget.h \
src/qt/qtquick_controls/cpp/listiteminterface.h \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.h \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.h \
src/qt/qtquick_controls/cpp/qmlimageprovider.h \
src/qt/qtquick_controls/cpp/qmllistitem.h \
src/qt/qtquick_controls/cpp/qmllistmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.h \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.h \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.h \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.h \
src/qt/gui20_skin.h \
src/qt/cscfusionstyle.h \
src/qt/pryptopage.h \
src/qt/currencies.h \
src/qt/CSCPublicAPI/jsoncoininfoparser.h \
src/qt/infopage.h \
src/qt/qtquick_controls/cpp/guiexchangeswidget.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.h \
src/qt/qtquick_controls/cpp/guiexchangeslistview.h \
src/qt/qtquick_controls/cpp/guiexchangescontrol.h \
src/qt/twitter/twitterwidget.h
SOURCES += src/qt/bitcoin.cpp \
src/qt/bitcoingui.cpp \
src/qt/transactiontablemodel.cpp \
src/qt/addresstablemodel.cpp \
src/qt/optionsdialog.cpp \
src/qt/sendcoinsdialog.cpp \
src/qt/coincontroldialog.cpp \
src/qt/coincontroltreewidget.cpp \
src/qt/addressbookpage.cpp \
src/qt/signverifymessagedialog.cpp \
src/qt/aboutdialog.cpp \
src/qt/editaddressdialog.cpp \
src/qt/bitcoinaddressvalidator.cpp \
src/alert.cpp \
src/version.cpp \
src/sync.cpp \
src/util.cpp \
src/hash.cpp \
src/netbase.cpp \
src/key.cpp \
src/script.cpp \
src/main.cpp \
src/init.cpp \
src/net.cpp \
src/bloom.cpp \
src/checkpoints.cpp \
src/addrman.cpp \
src/db.cpp \
src/walletdb.cpp \
src/qt/clientmodel.cpp \
src/qt/guiutil.cpp \
src/qt/transactionrecord.cpp \
src/qt/optionsmodel.cpp \
src/qt/monitoreddatamapper.cpp \
src/qt/transactiondesc.cpp \
src/qt/transactiondescdialog.cpp \
src/qt/bitcoinstrings.cpp \
src/qt/bitcoinamountfield.cpp \
src/wallet.cpp \
src/keystore.cpp \
src/qt/transactionfilterproxy.cpp \
src/qt/transactionview.cpp \
src/qt/walletmodel.cpp \
src/qt/walletview.cpp \
src/qt/walletstack.cpp \
src/qt/walletframe.cpp \
src/bitcoinrpc.cpp \
src/rpcdump.cpp \
src/rpcnet.cpp \
src/rpcmining.cpp \
src/rpcwallet.cpp \
src/rpcblockchain.cpp \
src/rpcrawtransaction.cpp \
src/qt/overviewpage.cpp \
src/qt/csvmodelwriter.cpp \
src/crypter.cpp \
src/qt/sendcoinsentry.cpp \
src/qt/qvalidatedlineedit.cpp \
src/qt/bitcoinunits.cpp \
src/qt/qvaluecombobox.cpp \
src/qt/askpassphrasedialog.cpp \
src/protocol.cpp \
src/qt/notificator.cpp \
src/qt/paymentserver.cpp \
src/qt/rpcconsole.cpp \
src/scrypt.cpp \
src/noui.cpp \
src/leveldb.cpp \
src/txdb.cpp \
src/qt/splashscreen.cpp \
src/qt/CSCPublicAPI/casinocoinwebapi.cpp \
src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.cpp \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.cpp \
src/qt/qtquick_controls/cpp/guibannercontrol.cpp \
src/qt/qtquick_controls/cpp/guibannerlistview.cpp \
src/qt/qtquick_controls/cpp/guibannerwidget.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlimageprovider.cpp \
src/qt/qtquick_controls/cpp/qmllistitem.cpp \
src/qt/qtquick_controls/cpp/qmllistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.cpp \
src/qt/gui20_skin.cpp \
src/qt/cscfusionstyle.cpp \
src/qt/pryptopage.cpp \
src/qt/currencies.cpp \
src/qt/CSCPublicAPI/jsoncoininfoparser.cpp \
src/qt/infopage.cpp \
src/qt/qtquick_controls/cpp/guiexchangeswidget.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.cpp \
src/qt/qtquick_controls/cpp/guiexchangeslistview.cpp \
src/qt/qtquick_controls/cpp/guiexchangescontrol.cpp \
src/qt/twitter/twitterwidget.cpp
RESOURCES += src/qt/bitcoin.qrc
FORMS += src/qt/forms/sendcoinsdialog.ui \
src/qt/forms/coincontroldialog.ui \
src/qt/forms/addressbookpage.ui \
src/qt/forms/signverifymessagedialog.ui \
src/qt/forms/aboutdialog.ui \
src/qt/forms/editaddressdialog.ui \
src/qt/forms/transactiondescdialog.ui \
src/qt/forms/overviewpage.ui \
src/qt/forms/sendcoinsentry.ui \
src/qt/forms/askpassphrasedialog.ui \
src/qt/forms/rpcconsole.ui \
src/qt/forms/optionsdialog.ui \
src/qt/forms/pryptopage.ui \
src/qt/forms/infopage.ui
OTHER_FILES += README.md \
doc/*.rst \
doc/*.txt \
doc/*.md \
src/qt/res/bitcoin-qt.rc \
src/test/*.cpp \
src/test/*.h \
src/qt/test/*.cpp \
src/qt/test/*.h \
src/qt/qtquick_controls/qml/QmlGUIBannerControl.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesControl.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesListView.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarListView.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarControl.qml \
src/qt/twitter/*.qml
DISTFILES += \
QmlImports.qml
##### End Project Files #####
contains(USE_QRCODE, 1) {
HEADERS += src/qt/qrcodedialog.h
SOURCES += src/qt/qrcodedialog.cpp
FORMS += src/qt/forms/qrcodedialog.ui
}
contains(BITCOIN_QT_TEST, 1) {
SOURCES += src/qt/test/test_main.cpp \
src/qt/test/uritests.cpp
HEADERS += src/qt/test/uritests.h
DEPENDPATH += src/qt/test
QT += testlib
TARGET = casinocoin-qt_test
DEFINES += BITCOIN_QT_TEST
}
contains(USE_SSE2, 1) {
DEFINES += USE_SSE2
gccsse2.input = SOURCES_SSE2
gccsse2.output = $$PWD/build/${QMAKE_FILE_BASE}.o
gccsse2.commands = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -msse2 -mstackrealign
QMAKE_EXTRA_COMPILERS += gccsse2
SOURCES_SSE2 += src/scrypt-sse2.cpp
}
# for lrelease/lupdate
# also add new translations to src/qt/bitcoin.qrc under translations/
TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts)
isEmpty(QMAKE_LRELEASE) {
QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
}
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
# automatically build translations, so they can be included in resource file
TSQM.name = lrelease ${QMAKE_FILE_IN}
TSQM.input = TRANSLATIONS
TSQM.output = $$QM_DIR/${QMAKE_FILE_BASE}.qm
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
TSQM.CONFIG = no_link
QMAKE_EXTRA_COMPILERS += TSQM
DEFINES += WIN32
RC_FILE = src/qt/res/bitcoin-qt.rc
!contains(MINGW_THREAD_BUGFIX, 0) {
# At least qmake's win32-g++-cross profile is missing the -lmingwthrd
# thread-safety flag. GCC has -mthreads to enable this, but it doesn't
# work with static linking. -lmingwthrd must come BEFORE -lmingw, so
# it is prepended to QMAKE_LIBS_QT_ENTRY.
# It can be turned off with MINGW_THREAD_BUGFIX=0, just in case it causes
# any problems on some untested qmake profile now or in the future.
DEFINES += _MT
QMAKE_LIBS_QT_ENTRY = -lmingwthrd $$QMAKE_LIBS_QT_ENTRY
}
# Set libraries and includes at end, to use platform-defined defaults if not overridden
INCLUDEPATH += $$BDB_INCLUDE_PATH $$QRENCODE_INCLUDE_PATH $$BOOST_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH
LIBS += $$join(BDB_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,) $$join(BOOST_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,)
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX -lpthread
# -lgdi32 has to happen after -lcrypto (see #681)
LIBS += -lws2_32 -lole32 -lmswsock -loleaut32 -luuid -lgdi32 -lshlwapi
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_LIB_SUFFIX
LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
system($$QMAKE_LRELEASE -silent $$TRANSLATIONS)

View File

@@ -0,0 +1,264 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.0.0, 2016-06-14T10:56:38. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{5cb6bc84-6e3a-4b8c-88a9-7054f966d617}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap"/>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.6.0 (mingw32)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.6.0 (mingw32)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b3cf2641-46bb-4b28-b7a6-2713d9074823}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory"></value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">&quot;USE_UPNP=0&quot; &quot;USE_QRCODE=1&quot; &quot;USE_IPV6=1&quot;</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/a.jochems/Documents/GitHub/casinocoin-development</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">&quot;USE_UPNP=0&quot; &quot;USE_QRCODE=1&quot; &quot;USE_IPV6=1&quot;</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">casinocoin-qt-windows</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/a.jochems/Documents/GitHub/casinocoin-development/casinocoin-qt-windows.pro</value>
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">casinocoin-qt-windows.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">C:/Users/a.jochems/Documents/GitHub/casinocoin-development</value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">18</value>
</data>
<data>
<variable>Version</variable>
<value type="int">18</value>
</data>
</qtcreator>

View File

@@ -1,13 +1,13 @@
TEMPLATE = app TEMPLATE = app
TARGET = casinocoin-qt TARGET = casinocoin-qt
macx:TARGET = "CasinoCoin-Qt" macx:TARGET = "CasinoCoin-Qt"
VERSION = 1.2.0.0 VERSION = 2.0.0.0
INCLUDEPATH += src src/json src/qt INCLUDEPATH += src src/json src/qt
QT += core gui network QT += core gui network widgets qml quick
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE USE_IPV6 __NO_SYSTEM_INCLUDES DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE USE_IPV6 __NO_SYSTEM_INCLUDES
CONFIG += no_include_pwd CONFIG += no_include_pwd
CONFIG += thread CONFIG += thread
CONFIG += static
# for boost 1.37, add -mt to the boost libraries # for boost 1.37, add -mt to the boost libraries
# use: qmake BOOST_LIB_SUFFIX=-mt # use: qmake BOOST_LIB_SUFFIX=-mt
@@ -19,14 +19,40 @@ CONFIG += thread
# BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH, # BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH,
# BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively # BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively
BOOST_INCLUDE_PATH=E:/crypto/deps/boost_1_53_0 win32 {
BOOST_LIB_PATH=E:/crypto/deps/boost_1_53_0/stage/lib BOOST_LIB_SUFFIX=-mt
BDB_INCLUDE_PATH=E:/crypto/deps/db-4.8.30.NC/build_unix BOOST_THREAD_LIB_SUFFIX=_win32-mt
BDB_LIB_PATH=E:/crypto/deps/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=/home/ubuntu/deps/windows/db-4.8.30.NC/build_unix
OPENSSL_INCLUDE_PATH=E:/crypto/deps/openssl-1.0.1g/include BDB_LIB_PATH=/home/ubuntu/deps/windows/db-4.8.30.NC/build_unix
OPENSSL_LIB_PATH=E:/crypto/deps/openssl-1.0.1g OPENSSL_INCLUDE_PATH=/home/ubuntu/deps/windows/openssl-1.0.1h/include
QRENCODE_INCLUDE_PATH=E:/crypto/deps/qrencode-3.4.3 OPENSSL_LIB_PATH=/home/ubuntu/deps/windows/openssl-1.0.1h
QRENCODE_LIB_PATH=E:/crypto/deps/qrencode-3.4.3/.libs MINIUPNPC_INCLUDE_PATH=/home/ubuntu/deps/windows/
MINIUPNPC_LIB_PATH=/home/ubuntu/deps/windows/miniupnpc
QRENCODE_INCLUDE_PATH=/home/ubuntu/deps/windows/qrencode-3.4.3
QRENCODE_LIB_PATH=/home/ubuntu/deps/windows/qrencode-3.4.3/.libs
} macx {
BOOST_INCLUDE_PATH=/usr/local/opt/boost/include
BOOST_LIB_PATH=/usr/local/opt/boost/lib
BDB_INCLUDE_PATH=/usr/local/opt/berkeley-db4/include
BDB_LIB_PATH=/usr/local/opt/berkeley-db4/lib
OPENSSL_INCLUDE_PATH=/usr/local/opt/openssl/include
OPENSSL_LIB_PATH=/usr/local/opt/openssl/lib
MINIUPNPC_INCLUDE_PATH=/usr/local/opt/miniupnpc/include
MINIUPNPC_LIB_PATH=/usr/local/opt/miniupnpc/lib
QRENCODE_INCLUDE_PATH=/usr/local/opt/qrencode/include
QRENCODE_LIB_PATH=/usr/local/opt/qrencode/lib
} else {
BOOST_INCLUDE_PATH=/home/ubuntu/deps/linux/boost_1_55_0
BOOST_LIB_PATH=/home/ubuntu/deps/linux/boost_1_55_0/stage/lib
BDB_INCLUDE_PATH=/home/ubuntu/deps/linux/db-4.8.30.NC/build_unix
BDB_LIB_PATH=/home/ubuntu/deps/linux/db-4.8.30.NC/build_unix
OPENSSL_INCLUDE_PATH=/home/ubuntu/deps/linux/openssl-1.0.1h/include
OPENSSL_LIB_PATH=/home/ubuntu/deps/linux/openssl-1.0.1h
MINIUPNPC_INCLUDE_PATH=/home/ubuntu/deps/linux/
MINIUPNPC_LIB_PATH=/home/ubuntu/deps/linux/miniupnpc
QRENCODE_INCLUDE_PATH=/home/ubuntu/deps/linux/qrencode-3.4.3
QRENCODE_LIB_PATH=/home/ubuntu/deps/linux/qrencode-3.4.3/.libs
}
OBJECTS_DIR = build OBJECTS_DIR = build
MOC_DIR = build MOC_DIR = build
@@ -141,7 +167,11 @@ QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) cl
DEFINES += HAVE_BUILD_INFO DEFINES += HAVE_BUILD_INFO
} }
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wstack-protector QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-strict-aliasing -Wstack-protector
!macx {
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedefs
}
# Input # Input
DEPENDPATH += src src/json src/qt DEPENDPATH += src src/json src/qt
@@ -229,7 +259,38 @@ HEADERS += src/qt/bitcoingui.h \
src/threadsafety.h \ src/threadsafety.h \
src/limitedmap.h \ src/limitedmap.h \
src/qt/macnotificationhandler.h \ src/qt/macnotificationhandler.h \
src/qt/splashscreen.h src/qt/splashscreen.h \
src/qt/CSCPublicAPI/casinocoinwebapi.h \
src/qt/CSCPublicAPI/casinocoinwebapiparser.h \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.h \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.h \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.h \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.h \
src/qt/qtquick_controls/cpp/guibannercontrol.h \
src/qt/qtquick_controls/cpp/guibannerlistview.h \
src/qt/qtquick_controls/cpp/guibannerwidget.h \
src/qt/qtquick_controls/cpp/listiteminterface.h \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.h \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.h \
src/qt/qtquick_controls/cpp/qmlimageprovider.h \
src/qt/qtquick_controls/cpp/qmllistitem.h \
src/qt/qtquick_controls/cpp/qmllistmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.h \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.h \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.h \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.h \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.h \
src/qt/gui20_skin.h \
src/qt/cscfusionstyle.h \
src/qt/pryptopage.h \
src/qt/currencies.h \
src/qt/CSCPublicAPI/jsoncoininfoparser.h \
src/qt/infopage.h \
src/qt/qtquick_controls/cpp/guiexchangeswidget.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.h \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.h \
src/qt/qtquick_controls/cpp/guiexchangeslistview.h \
src/qt/qtquick_controls/cpp/guiexchangescontrol.h
SOURCES += src/qt/bitcoin.cpp \ SOURCES += src/qt/bitcoin.cpp \
src/qt/bitcoingui.cpp \ src/qt/bitcoingui.cpp \
@@ -300,7 +361,38 @@ SOURCES += src/qt/bitcoin.cpp \
src/noui.cpp \ src/noui.cpp \
src/leveldb.cpp \ src/leveldb.cpp \
src/txdb.cpp \ src/txdb.cpp \
src/qt/splashscreen.cpp src/qt/splashscreen.cpp \
src/qt/CSCPublicAPI/casinocoinwebapi.cpp \
src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp \
src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp \
src/qt/CSCPublicAPI/jsonactiveexchangesparser.cpp \
src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp \
src/qt/CSCPublicAPI/jsonsingleactiveexchange.cpp \
src/qt/qtquick_controls/cpp/guibannercontrol.cpp \
src/qt/qtquick_controls/cpp/guibannerlistview.cpp \
src/qt/qtquick_controls/cpp/guibannerwidget.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp \
src/qt/qtquick_controls/cpp/qmlbannerlistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlimageprovider.cpp \
src/qt/qtquick_controls/cpp/qmllistitem.cpp \
src/qt/qtquick_controls/cpp/qmllistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbarmodel.cpp \
src/qt/qtquick_controls/cpp/qmlmenutoolbaritem.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarwidget.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarlistview.cpp \
src/qt/qtquick_controls/cpp/guimenutoolbarcontrol.cpp \
src/qt/gui20_skin.cpp \
src/qt/cscfusionstyle.cpp \
src/qt/pryptopage.cpp \
src/qt/currencies.cpp \
src/qt/CSCPublicAPI/jsoncoininfoparser.cpp \
src/qt/infopage.cpp \
src/qt/qtquick_controls/cpp/guiexchangeswidget.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistmodel.cpp \
src/qt/qtquick_controls/cpp/qmlexchangeslistitem.cpp \
src/qt/qtquick_controls/cpp/guiexchangeslistview.cpp \
src/qt/qtquick_controls/cpp/guiexchangescontrol.cpp
RESOURCES += src/qt/bitcoin.qrc RESOURCES += src/qt/bitcoin.qrc
@@ -315,7 +407,9 @@ FORMS += src/qt/forms/sendcoinsdialog.ui \
src/qt/forms/sendcoinsentry.ui \ src/qt/forms/sendcoinsentry.ui \
src/qt/forms/askpassphrasedialog.ui \ src/qt/forms/askpassphrasedialog.ui \
src/qt/forms/rpcconsole.ui \ src/qt/forms/rpcconsole.ui \
src/qt/forms/optionsdialog.ui src/qt/forms/optionsdialog.ui \
src/qt/forms/pryptopage.ui \
src/qt/forms/infopage.ui
contains(USE_QRCODE, 1) { contains(USE_QRCODE, 1) {
HEADERS += src/qt/qrcodedialog.h HEADERS += src/qt/qrcodedialog.h
@@ -351,8 +445,9 @@ CODECFORTR = UTF-8
TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts) TRANSLATIONS = $$files(src/qt/locale/bitcoin_*.ts)
isEmpty(QMAKE_LRELEASE) { isEmpty(QMAKE_LRELEASE) {
win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe # win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease # else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
} }
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
# automatically build translations, so they can be included in resource file # automatically build translations, so they can be included in resource file
@@ -372,7 +467,16 @@ OTHER_FILES += README.md \
src/test/*.cpp \ src/test/*.cpp \
src/test/*.h \ src/test/*.h \
src/qt/test/*.cpp \ src/qt/test/*.cpp \
src/qt/test/*.h src/qt/test/*.h \
src/qt/qtquick_controls/qml/QmlGUIBannerControl.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml \
src/qt/qtquick_controls/qml/QmlGUIBannerWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesControl.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesListView.qml \
src/qt/qtquick_controls/qml/QmlGUIExchangesWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarWindow.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarListView.qml \
src/qt/qtquick_controls/qml/QmlGUIMenuToolbarControl.qml
# platform specific defaults, if not overridden on command line # platform specific defaults, if not overridden on command line
isEmpty(BOOST_LIB_SUFFIX) { isEmpty(BOOST_LIB_SUFFIX) {
@@ -453,3 +557,6 @@ contains(RELEASE, 1) {
} }
system($$QMAKE_LRELEASE -silent $$TRANSLATIONS) system($$QMAKE_LRELEASE -silent $$TRANSLATIONS)
DISTFILES += \
QmlImports.qml

View File

@@ -0,0 +1,14 @@
// This file is autogenerated by qmake. It imports static plugin classes for
// static plugins used by QML imports.
#include <QtPlugin>
Q_IMPORT_PLUGIN(QtQuick2Plugin)
Q_IMPORT_PLUGIN(QtQuickControlsPlugin)
Q_IMPORT_PLUGIN(QtQuick2DialogsPlugin)
Q_IMPORT_PLUGIN(QtQuickLayoutsPlugin)
Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)
Q_IMPORT_PLUGIN(QmlFolderListModelPlugin)
Q_IMPORT_PLUGIN(QmlSettingsPlugin)
Q_IMPORT_PLUGIN(QtQuick2DialogsPrivatePlugin)
Q_IMPORT_PLUGIN(QtQuickExtrasPlugin)
Q_IMPORT_PLUGIN(QtQmlModelsPlugin)
Q_IMPORT_PLUGIN(QtQuick2PrivateWidgetsPlugin)

63
contrib/casinocoind.conf Normal file
View File

@@ -0,0 +1,63 @@
description "Casinocoin Core Daemon"
start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]
env CASINOCOIND_BIN="/usr/bin/casinocoind"
env CASINOCOIND_USER="ubuntu"
env CASINOCOIND_GROUP="ubuntu"
env CASINOCOIND_PIDDIR="/var/run/casinocoind"
# upstart can't handle variables constructed with other variables
env CASINOCOIND_PIDFILE="/var/run/casinocoind/casinocoind.pid"
env CASINOCOIND_CONFIGFILE="/u01/CSC/.casinocoin/casinocoin.conf"
env CASINOCOIND_DATADIR="/u01/CSC/data"
expect fork
respawn
respawn limit 5 120
kill timeout 60
pre-start script
# this will catch non-existent config files
# bitcoind will check and exit with this very warning, but it can do so
# long after forking, leaving upstart to think everything started fine.
# since this is a commonly encountered case on install, just check and
# warn here.
if ! grep -qs '^rpcpassword=' "$CASINOCOIND_CONFIGFILE" ; then
echo "ERROR: You must set a secure rpcpassword to run casinocoind."
echo "The setting must appear in $CASINOCOIND_CONFIGFILE"
echo
echo "This password is security critical to securing wallets "
echo "and must not be the same as the rpcuser setting."
echo "You can generate a suitable random password using the following"
echo "command from the shell:"
echo
echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
echo
echo "It is also recommended that you also set alertnotify so you are "
echo "notified of problems:"
echo
echo "ie: alertnotify=echo %%s | mail -s \"Casinocoin Alert\"" \
"admin@foo.com"
echo
exit 1
fi
mkdir -p "$CASINOCOIND_PIDDIR"
chmod 0755 "$CASINOCOIND_PIDDIR"
chown $CASINOCOIND_USER:$CASINOCOIND_GROUP "$CASINOCOIND_PIDDIR"
chown $CASINOCOIND_USER:$CASINOCOIND_GROUP "$CASINOCOIND_CONFIGFILE"
chmod 0660 "$CASINOCOIND_CONFIGFILE"
end script
exec start-stop-daemon \
--start \
--pidfile "$CASINOCOIND_PIDFILE" \
--chuid $CASINOCOIND_USER:$CASINOCOIND_GROUP \
--exec "$CASINOCOIND_BIN" \
-- \
-pid="$CASINOCOIND_PIDFILE" \
-conf="$CASINOCOIND_CONFIGFILE" \
-datadir="$CASINOCOIND_DATADIR" \
-daemon

View File

@@ -0,0 +1,48 @@
diff --git a/src/makefile.osx b/src/makefile.osx
index bef0ef3..07ef8d3 100644
--- a/src/makefile.osx
+++ b/src/makefile.osx
@@ -7,17 +7,21 @@
# Originally by Laszlo Hanyecz (solar@heliacal.net)
CXX=llvm-g++
-DEPSDIR=/opt/local
+DEPSDIR=/usr/local
+DB4DIR=/usr/local/opt/berkeley-db4
+OPENSSLDIR=/usr/local/opt/openssl
INCLUDEPATHS= \
-I"$(CURDIR)" \
- -I"$(CURDIR)"/obj \
+ -I"$(CURDIR)/obj" \
-I"$(DEPSDIR)/include" \
- -I"$(DEPSDIR)/include/db48"
+ -I"$(DB4DIR)/include" \
+ -I"$(OPENSSLDIR)/include"
LIBPATHS= \
-L"$(DEPSDIR)/lib" \
- -L"$(DEPSDIR)/lib/db48"
+ -L"$(DB4DIR)/lib" \
+ -L"$(OPENSSLDIR)/lib"
USE_UPNP:=1
USE_IPV6:=1
@@ -31,14 +35,14 @@ ifdef STATIC
TESTLIBS += \
$(DEPSDIR)/lib/libboost_unit_test_framework-mt.a
LIBS += \
- $(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \
+ $(DB4DIR)/lib/libdb_cxx-4.8.a \
$(DEPSDIR)/lib/libboost_system-mt.a \
$(DEPSDIR)/lib/libboost_filesystem-mt.a \
$(DEPSDIR)/lib/libboost_program_options-mt.a \
$(DEPSDIR)/lib/libboost_thread-mt.a \
$(DEPSDIR)/lib/libboost_chrono-mt.a \
- $(DEPSDIR)/lib/libssl.a \
- $(DEPSDIR)/lib/libcrypto.a \
+ $(OPENSSLDIR)/lib/libssl.a \
+ $(OPENSSLDIR)/lib/libcrypto.a \
-lz
else
TESTLIBS += \

View File

@@ -0,0 +1 @@
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

BIN
contrib/release/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,10 @@
The wallet has been succesfully installed.
Please be aware of the following two requirements.
- This software makes use of OpenSSL libraries. They may not yet be available on your machine. If you encounter issues with Redeeming Prypto codes or showing the Twitter feed on the Info page they are missing. Local laws may prohibit installing them so they are not installed with the wallet. In that case you must install the OpenSSL libraries manually. You can download and install the light version from https://slproweb.com/products/Win32OpenSSL.html
- This software makes use of OpenGL v2 rendering. On older machines or Virtual Machines that do not have recent video drivers this can cause graphics rendering problems. If this is the case you can enable a software renderer. To do so add the following parameter to your environment settings via Control Panel -> System -> Advanced System Settings -> Environment Variables:
Variable: QT_OPENGL_DLL
Value: opengl32sw.dll

3
contrib/release/qt.conf Normal file
View File

@@ -0,0 +1,3 @@
[Paths]
Plugins=.
Qml2Imports=.

Binary file not shown.

View File

@@ -15,7 +15,7 @@
#ifdef _WIN32_WINNT #ifdef _WIN32_WINNT
#undef _WIN32_WINNT #undef _WIN32_WINNT
#endif #endif
#define _WIN32_WINNT 0x0501 #define _WIN32_WINNT 0x0600
#define WIN32_LEAN_AND_MEAN 1 #define WIN32_LEAN_AND_MEAN 1
#ifndef NOMINMAX #ifndef NOMINMAX
#define NOMINMAX #define NOMINMAX

View File

@@ -182,10 +182,10 @@ Value stop(const Array& params, bool fHelp)
if (fHelp || params.size() > 1) if (fHelp || params.size() > 1)
throw runtime_error( throw runtime_error(
"stop\n" "stop\n"
"Stop CasinoCoin server."); "Stop "+ COIN_NAME_DISPLAY + " server.");
// Shutdown will take long enough that the response should get back // Shutdown will take long enough that the response should get back
StartShutdown(); StartShutdown();
return "CasinoCoin server stopping"; return ""+ COIN_NAME_DISPLAY + " server stopping";
} }
@@ -265,6 +265,7 @@ static const CRPCCommand vRPCCommands[] =
{ "lockunspent", &lockunspent, false, false, true }, { "lockunspent", &lockunspent, false, false, true },
{ "listlockunspent", &listlockunspent, false, false, true }, { "listlockunspent", &listlockunspent, false, false, true },
{ "verifychain", &verifychain, true, false, false }, { "verifychain", &verifychain, true, false, false },
{ "getcoinsupply", &getcoinsupply, true, false, false },
}; };
CRPCTable::CRPCTable() CRPCTable::CRPCTable()
@@ -298,7 +299,7 @@ string HTTPPost(const string& strMsg, const map<string,string>& mapRequestHeader
{ {
ostringstream s; ostringstream s;
s << "POST / HTTP/1.1\r\n" s << "POST / HTTP/1.1\r\n"
<< "User-Agent: casinocoin-json-rpc/" << FormatFullVersion() << "\r\n" << "User-Agent: "+ COIN_NAME + "-json-rpc/" << FormatFullVersion() << "\r\n"
<< "Host: 127.0.0.1\r\n" << "Host: 127.0.0.1\r\n"
<< "Content-Type: application/json\r\n" << "Content-Type: application/json\r\n"
<< "Content-Length: " << strMsg.size() << "\r\n" << "Content-Length: " << strMsg.size() << "\r\n"
@@ -329,7 +330,7 @@ static string HTTPReply(int nStatus, const string& strMsg, bool keepalive)
if (nStatus == HTTP_UNAUTHORIZED) if (nStatus == HTTP_UNAUTHORIZED)
return strprintf("HTTP/1.0 401 Authorization Required\r\n" return strprintf("HTTP/1.0 401 Authorization Required\r\n"
"Date: %s\r\n" "Date: %s\r\n"
"Server: casinocoin-json-rpc/%s\r\n" "Server: "+ COIN_NAME + "-json-rpc/%s\r\n"
"WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n" "WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n"
"Content-Type: text/html\r\n" "Content-Type: text/html\r\n"
"Content-Length: 296\r\n" "Content-Length: 296\r\n"
@@ -356,7 +357,7 @@ static string HTTPReply(int nStatus, const string& strMsg, bool keepalive)
"Connection: %s\r\n" "Connection: %s\r\n"
"Content-Length: %" PRIszu "\r\n" "Content-Length: %" PRIszu "\r\n"
"Content-Type: application/json\r\n" "Content-Type: application/json\r\n"
"Server: casinocoin-json-rpc/%s\r\n" "Server: "+ COIN_NAME + "-json-rpc/%s\r\n"
"\r\n" "\r\n"
"%s", "%s",
nStatus, nStatus,
@@ -736,7 +737,7 @@ void StartRPCThreads()
{ {
unsigned char rand_pwd[32]; unsigned char rand_pwd[32];
RAND_bytes(rand_pwd, 32); RAND_bytes(rand_pwd, 32);
string strWhatAmI = "To use casinocoind"; string strWhatAmI = "To use "+ COIN_NAME + "d";
if (mapArgs.count("-server")) if (mapArgs.count("-server"))
strWhatAmI = strprintf(_("To use the %s option"), "\"-server\""); strWhatAmI = strprintf(_("To use the %s option"), "\"-server\"");
else if (mapArgs.count("-daemon")) else if (mapArgs.count("-daemon"))
@@ -745,13 +746,13 @@ void StartRPCThreads()
_("%s, you must set a rpcpassword in the configuration file:\n" _("%s, you must set a rpcpassword in the configuration file:\n"
"%s\n" "%s\n"
"It is recommended you use the following random password:\n" "It is recommended you use the following random password:\n"
"rpcuser=casinocoinrpc\n" "rpcuser=")+ COIN_NAME + _("rpc\n"
"rpcpassword=%s\n" "rpcpassword=%s\n"
"(you do not need to remember this password)\n" "(you do not need to remember this password)\n"
"The username and password MUST NOT be the same.\n" "The username and password MUST NOT be the same.\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n" "If the file does not exist, create it with owner-readable-only file permissions.\n"
"It is also recommended to set alertnotify so you are notified of problems;\n" "It is also recommended to set alertnotify so you are notified of problems;\n"
"for example: alertnotify=echo %%s | mail -s \"CasinoCoin Alert\" admin@foo.com\n"), "for example: alertnotify=echo %%s | mail -s \"")+ COIN_NAME_DISPLAY + _(" Alert\" admin@foo.com\n"),
strWhatAmI.c_str(), strWhatAmI.c_str(),
GetConfigFile().string().c_str(), GetConfigFile().string().c_str(),
EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()), EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()),
@@ -1194,6 +1195,8 @@ Array RPCConvertValues(const std::string &strMethod, const std::vector<std::stri
if (strMethod == "importprivkey" && n > 2) ConvertTo<bool>(params[2]); if (strMethod == "importprivkey" && n > 2) ConvertTo<bool>(params[2]);
if (strMethod == "verifychain" && n > 0) ConvertTo<boost::int64_t>(params[0]); if (strMethod == "verifychain" && n > 0) ConvertTo<boost::int64_t>(params[0]);
if (strMethod == "verifychain" && n > 1) ConvertTo<boost::int64_t>(params[1]); if (strMethod == "verifychain" && n > 1) ConvertTo<boost::int64_t>(params[1]);
if (strMethod == "getcoinsupply" && n > 0) ConvertTo<boost::int64_t>(params[0], true);
if (strMethod == "getcoinsupply" && n > 1) ConvertTo<bool>(params[1], true);
return params; return params;
} }

View File

@@ -206,4 +206,6 @@ extern json_spirit::Value gettxoutsetinfo(const json_spirit::Array& params, bool
extern json_spirit::Value gettxout(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value gettxout(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value verifychain(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value verifychain(const json_spirit::Array& params, bool fHelp);
extern json_spirit::Value getcoinsupply(const json_spirit::Array& params, bool fHelp);
#endif #endif

View File

@@ -67,13 +67,21 @@ namespace Checkpoints
( 317777, uint256("0x0458c7effe8348b551f47c3d7115c9347f4121749549650d495b88e8d0a9c666")) ( 317777, uint256("0x0458c7effe8348b551f47c3d7115c9347f4121749549650d495b88e8d0a9c666"))
( 347777, uint256("0x9ba10b9cd9b94e903e67da6a1033841a3e66b6a33f09cbaec2146d4f72dbea2d")) ( 347777, uint256("0x9ba10b9cd9b94e903e67da6a1033841a3e66b6a33f09cbaec2146d4f72dbea2d"))
( 377777, uint256("0x6eecff79e07910c69ac5340ad34c74cd95ecdfb0282ac62b30e7ba443114a628")) ( 377777, uint256("0x6eecff79e07910c69ac5340ad34c74cd95ecdfb0282ac62b30e7ba443114a628"))
( 444429, uint256("0x01f8b85612927fd3660e7e036f559770ebb09d896f54abf70d99be2fe1793155")) // last solved checkpoint candidate while updating ( 444429, uint256("0x01f8b85612927fd3660e7e036f559770ebb09d896f54abf70d99be2fe1793155"))
( 750000, uint256("0x4e5e0c5d7ee65cc0cf8cb995ef2c701773026baff189a922d9d51bba21cd8e8f"))
( 1000250, uint256("0x43ae9b7d1fcbe37eeb3dc3460b69a574d13e09cdec7d5da01c32d279a452842a"))
( 1105321, uint256("0xac44589a3914c6ad1e8e1d2d007fd76271abca6e38518e39b131ead11142f29d"))
( 1275800, uint256("0x8d74b3baf71c3f3f31e8d6f8c684d890f65764bded05d67f5d10c3b12ee59c75"))
( 1346290, uint256("0x0711f69754fe7f49b965d90db67f94025c3b89c114b60242513b1634220ce2c7"))
( 1461488, uint256("0xd23bc59328a745a8ed6803fcb7ea9f582dd09470ea24303ab0312ad8d29a5809"))
( 1525492, uint256("0xd315bf68cf03c43ebef827e6db8d5d86a43f261c6e1981a0a5ededa8243a73ce"))
// last solved checkpoint candidate while updating
// (we need to know the debug.log tx= for the last checkpoint) // (we need to know the debug.log tx= for the last checkpoint)
; ;
static const CCheckpointData data = { static const CCheckpointData data = {
&mapCheckpoints, &mapCheckpoints,
1400510546, // * UNIX timestamp of last checkpoint block 1465265319, // * UNIX timestamp of last checkpoint block
661156, // * total number of transactions between genesis and last checkpoint 1923205, // * total number of transactions between genesis and last checkpoint
// (the tx=... number in the SetBestChain debug.log lines) // (the tx=... number in the SetBestChain debug.log lines)
4 // * estimated number of transactions per day after checkpoint 4 // * estimated number of transactions per day after checkpoint
}; };

View File

@@ -6,8 +6,8 @@
// //
// These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it // These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 1 #define CLIENT_VERSION_MAJOR 3
#define CLIENT_VERSION_MINOR 2 #define CLIENT_VERSION_MINOR 0
#define CLIENT_VERSION_REVISION 0 #define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_BUILD 0 #define CLIENT_VERSION_BUILD 0
@@ -16,7 +16,7 @@
// Copyright year (2009-this) // Copyright year (2009-this)
// Todo: update this when changing our copyright comments in the source // Todo: update this when changing our copyright comments in the source
#define COPYRIGHT_YEAR 2014 #define COPYRIGHT_YEAR 2016
// Converts the parameter X to a string after macro replacement on X has been performed. // Converts the parameter X to a string after macro replacement on X has been performed.
// Don't merge these into one macro! // Don't merge these into one macro!

View File

@@ -6,13 +6,12 @@
#define _BITCOIN_COMPAT_H 1 #define _BITCOIN_COMPAT_H 1
#ifdef WIN32 #ifdef WIN32
#define _WIN32_WINNT 0x0501 #define _WIN32_WINNT 0x0600
#define WIN32_LEAN_AND_MEAN 1 #define WIN32_LEAN_AND_MEAN 1
#ifndef NOMINMAX #ifndef NOMINMAX
#define NOMINMAX #define NOMINMAX
#endif #endif
#define FD_SETSIZE 1024 // max number of fds in fd_set #define FD_SETSIZE 1024 // max number of fds in fd_set
#include <winsock2.h>
#include <mswsock.h> #include <mswsock.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#else #else
@@ -26,12 +25,12 @@
#include <ifaddrs.h> #include <ifaddrs.h>
#endif #endif
typedef u_int SOCKET;
#ifdef WIN32 #ifdef WIN32
#define MSG_NOSIGNAL 0 #define MSG_NOSIGNAL 0
#define MSG_DONTWAIT 0 #define MSG_DONTWAIT 0
typedef int socklen_t; typedef int socklen_t;
#else #else
typedef u_int SOCKET;
#include "errno.h" #include "errno.h"
#define WSAGetLastError() errno #define WSAGetLastError() errno
#define WSAEINVAL EINVAL #define WSAEINVAL EINVAL

View File

@@ -10,6 +10,7 @@
#include "init.h" #include "init.h"
#include "util.h" #include "util.h"
#include "ui_interface.h" #include "ui_interface.h"
#include "version.h"
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp> #include <boost/filesystem/fstream.hpp>
@@ -78,6 +79,7 @@ volatile bool fRequestShutdown = false;
void StartShutdown() void StartShutdown()
{ {
boost::this_thread::sleep_for( boost::chrono::seconds( 1 ) );
fRequestShutdown = true; fRequestShutdown = true;
} }
bool ShutdownRequested() bool ShutdownRequested()
@@ -179,12 +181,12 @@ bool AppInit(int argc, char* argv[])
if (mapArgs.count("-?") || mapArgs.count("--help")) if (mapArgs.count("-?") || mapArgs.count("--help"))
{ {
// First part of help message is specific to bitcoind / RPC client // First part of help message is specific to bitcoind / RPC client
std::string strUsage = _("CasinoCoin version") + " " + FormatFullVersion() + "\n\n" + std::string strUsage = COIN_NAME_DISPLAY + " version" + " " + FormatFullVersion() + "\n\n" +
_("Usage:") + "\n" + _("Usage:") + "\n" +
" casinocoind [options] " + "\n" + " "+ COIN_NAME + "d [options] " + "\n" +
" casinocoind [options] <command> [params] " + _("Send command to -server or casinocoind") + "\n" + " "+ COIN_NAME + "d [options] <command> [params] " + "Send command to -server or "+ COIN_NAME + "d" + "\n" +
" casinocoind [options] help " + _("List commands") + "\n" + " "+ COIN_NAME + "d [options] help " + "List commands" + "\n" +
" casinocoind [options] help <command> " + _("Get help for a command") + "\n"; " "+ COIN_NAME + "d [options] help <command> " + "Get help for a command" + "\n";
strUsage += "\n" + HelpMessage(); strUsage += "\n" + HelpMessage();
@@ -194,7 +196,7 @@ bool AppInit(int argc, char* argv[])
// Command-line RPC // Command-line RPC
for (int i = 1; i < argc; i++) for (int i = 1; i < argc; i++)
if (!IsSwitchChar(argv[i][0]) && !boost::algorithm::istarts_with(argv[i], "casinocoin:")) if (!IsSwitchChar(argv[i][0]) && !boost::algorithm::istarts_with(argv[i], (std::string("") + COIN_NAME + ":").c_str()))
fCommandLine = true; fCommandLine = true;
if (fCommandLine) if (fCommandLine)
@@ -297,8 +299,8 @@ std::string HelpMessage()
{ {
string strUsage = _("Options:") + "\n" + string strUsage = _("Options:") + "\n" +
" -? " + _("This help message") + "\n" + " -? " + _("This help message") + "\n" +
" -conf=<file> " + _("Specify configuration file (default: casinocoin.conf)") + "\n" + " -conf=<file> " + "Specify configuration file (default: "+ COIN_NAME + ".conf)" + "\n" +
" -pid=<file> " + _("Specify pid file (default: casinocoind.pid)") + "\n" + " -pid=<file> " + "Specify pid file (default: "+ COIN_NAME + "d.pid)" + "\n" +
" -gen " + _("Generate coins (default: 0)") + "\n" + " -gen " + _("Generate coins (default: 0)") + "\n" +
" -datadir=<dir> " + _("Specify data directory") + "\n" + " -datadir=<dir> " + _("Specify data directory") + "\n" +
" -dbcache=<n> " + _("Set database cache size in megabytes (default: 25)") + "\n" + " -dbcache=<n> " + _("Set database cache size in megabytes (default: 25)") + "\n" +
@@ -375,7 +377,7 @@ std::string HelpMessage()
" -blockmaxsize=<n> " + _("Set maximum block size in bytes (default: 250000)") + "\n" + " -blockmaxsize=<n> " + _("Set maximum block size in bytes (default: 250000)") + "\n" +
" -blockprioritysize=<n> " + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n" + " -blockprioritysize=<n> " + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n" +
"\n" + _("SSL options: (see the CasinoCoin Wiki for SSL setup instructions)") + "\n" + "\n" + "SSL options: (see the "+ COIN_NAME_DISPLAY + " Wiki for SSL setup instructions)" + "\n" +
" -rpcssl " + _("Use OpenSSL (https) for JSON-RPC connections") + "\n" + " -rpcssl " + _("Use OpenSSL (https) for JSON-RPC connections") + "\n" +
" -rpcsslcertificatechainfile=<file.cert> " + _("Server certificate file (default: server.cert)") + "\n" + " -rpcsslcertificatechainfile=<file.cert> " + _("Server certificate file (default: server.cert)") + "\n" +
" -rpcsslprivatekeyfile=<file.pem> " + _("Server private key (default: server.pem)") + "\n" + " -rpcsslprivatekeyfile=<file.pem> " + _("Server private key (default: server.pem)") + "\n" +
@@ -644,12 +646,13 @@ bool AppInit2(boost::thread_group& threadGroup)
if (file) fclose(file); if (file) fclose(file);
static boost::interprocess::file_lock lock(pathLockFile.string().c_str()); static boost::interprocess::file_lock lock(pathLockFile.string().c_str());
if (!lock.try_lock()) if (!lock.try_lock())
return InitError(strprintf(_("Cannot obtain a lock on data directory %s. CasinoCoin is probably already running."), strDataDir.c_str())); return InitError(strprintf((std::string("Cannot obtain a lock on data directory %s. ")+ COIN_NAME_DISPLAY + " is probably already running.").c_str(), strDataDir.c_str()));
if (GetBoolArg("-shrinkdebugfile", !fDebug)) if (GetBoolArg("-shrinkdebugfile", !fDebug))
ShrinkDebugFile(); ShrinkDebugFile();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("CasinoCoin version %s (%s)\n", FormatFullVersion().c_str(), CLIENT_DATE.c_str()); std::string versionString = COIN_NAME_DISPLAY + " version %s (%s)\n";
printf(versionString.c_str(), FormatFullVersion().c_str(), CLIENT_DATE.c_str());
printf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION)); printf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION));
if (!fLogTimestamps) if (!fLogTimestamps)
printf("Startup time: %s\n", DateTimeStrFormat("%Y-%m-%d %H:%M:%S", GetTime()).c_str()); printf("Startup time: %s\n", DateTimeStrFormat("%Y-%m-%d %H:%M:%S", GetTime()).c_str());
@@ -659,8 +662,9 @@ bool AppInit2(boost::thread_group& threadGroup)
std::ostringstream strErrors; std::ostringstream strErrors;
if (fDaemon) if (fDaemon)
fprintf(stdout, "CasinoCoin server starting\n"); {
fprintf(stdout, "%s server starting\n", COIN_NAME_DISPLAY.c_str());
}
if (nScriptCheckThreads) { if (nScriptCheckThreads) {
printf("Using %u threads for script verification\n", nScriptCheckThreads); printf("Using %u threads for script verification\n", nScriptCheckThreads);
for (int i=0; i<nScriptCheckThreads-1; i++) for (int i=0; i<nScriptCheckThreads-1; i++)
@@ -1000,10 +1004,10 @@ bool AppInit2(boost::thread_group& threadGroup)
InitWarning(msg); InitWarning(msg);
} }
else if (nLoadWalletRet == DB_TOO_NEW) else if (nLoadWalletRet == DB_TOO_NEW)
strErrors << _("Error loading wallet.dat: Wallet requires newer version of CasinoCoin") << "\n"; strErrors << "Error loading wallet.dat: Wallet requires newer version of " << COIN_NAME_DISPLAY << "\n";
else if (nLoadWalletRet == DB_NEED_REWRITE) else if (nLoadWalletRet == DB_NEED_REWRITE)
{ {
strErrors << _("Wallet needed to be rewritten: restart CasinoCoin to complete") << "\n"; strErrors << "Wallet needed to be rewritten: restart "<< COIN_NAME_DISPLAY << " to complete" << "\n";
printf("%s", strErrors.str().c_str()); printf("%s", strErrors.str().c_str());
return InitError(strErrors.str()); return InitError(strErrors.str());
} }

View File

@@ -18,7 +18,7 @@ $(shell CC="$(CC)" CXX="$(CXX)" TARGET_OS="$(TARGET_OS)" \
include build_config.mk include build_config.mk
CFLAGS += -I. -I./include $(PLATFORM_CCFLAGS) $(OPT) CFLAGS += -I. -I./include $(PLATFORM_CCFLAGS) $(OPT)
CXXFLAGS += -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) CXXFLAGS += -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) -std=c++14
LDFLAGS += $(PLATFORM_LDFLAGS) LDFLAGS += $(PLATFORM_LDFLAGS)
LIBS += $(PLATFORM_LIBS) LIBS += $(PLATFORM_LIBS)

View File

@@ -139,7 +139,7 @@ case "$TARGET_OS" in
;; ;;
OS_WINDOWS_CROSSCOMPILE | NATIVE_WINDOWS) OS_WINDOWS_CROSSCOMPILE | NATIVE_WINDOWS)
PLATFORM=OS_WINDOWS PLATFORM=OS_WINDOWS
COMMON_FLAGS="-fno-builtin-memcmp -D_REENTRANT -DOS_WINDOWS -DLEVELDB_PLATFORM_WINDOWS -DWINVER=0x0500 -D__USE_MINGW_ANSI_STDIO=1" COMMON_FLAGS="-fno-builtin-memcmp -D_REENTRANT -DOS_WINDOWS -DLEVELDB_PLATFORM_WINDOWS -DWINVER=0x0600 -D__USE_MINGW_ANSI_STDIO=1"
PLATFORM_SOURCES="util/env_win.cc" PLATFORM_SOURCES="util/env_win.cc"
PLATFORM_LIBS="-lshlwapi" PLATFORM_LIBS="-lshlwapi"
PORT_FILE=port/port_win.cc PORT_FILE=port/port_win.cc

View File

@@ -66,7 +66,7 @@ map<uint256, set<uint256> > mapOrphanTransactionsByPrev;
// Constant stuff for coinbase transactions we create: // Constant stuff for coinbase transactions we create:
CScript COINBASE_FLAGS; CScript COINBASE_FLAGS;
const string strMessageMagic = "CasinoCoin Signed Message:\n"; const string strMessageMagic = COIN_NAME_DISPLAY + " Signed Message:\n";
double dHashesPerSec = 0.0; double dHashesPerSec = 0.0;
int64 nHPSTimerStart = 0; int64 nHPSTimerStart = 0;
@@ -1108,12 +1108,69 @@ int64 static GetBlockValue(int nHeight, int64 nFees)
nSubsidy = 45 * COIN; nSubsidy = 45 * COIN;
} }
// Subsidy is cut in half every 3153600 blocks, which will occur approximately every 3 years // Permantently reduce the number of mined coins to 10 after block 575000
nSubsidy >>= (nHeight / 3153600); // Permantently reduce the number of minded coins to 1 after block 1575000
// coin supply at that height = 38577206
// Blocks until max coin supply -> 63000000 - 38577206 = 24422794
// New height for reduction to 0 coins -> 1575000 + 24422794 = 25997794
if(nHeight > 575000){
if(nHeight < 1575000)
{
nSubsidy = 10 * COIN;
}
else if(nHeight >= 1575000 && nHeight <= 25997794){
nSubsidy = 1 * COIN;
}
else
{
nSubsidy = 0 * COIN;
}
}
// return subsidy + fees
return nSubsidy + nFees; return nSubsidy + nFees;
} }
int64 GetTotalCoinSupply(int nHeight, bool noCheckpoints)
{
int64 totalSupply = 0;
int startBlock = 1;
if ( !noCheckpoints ) {
// Reduce the amount of calculations by specifying total checkpoints
int heights[] = {
100000, 200000, 300000, 400000, 500000,
600000, 700000, 800000, 900000, 1000000,
1100000, 1200000, 1300000, 1400000, 1500000
};
int64 supplies[] = {
482721500000000, 982721500000000, 1482721500000000, 1982721500000000, 2482721500000000,
2882721500000000, 2982721500000000, 3082721500000000, 3182721500000000, 3282721500000000,
3382721500000000, 3482721500000000, 3582721500000000, 3682721500000000, 3782721500000000
};
if (nHeight>=1 ) {
int numHeights = (int)(sizeof(heights)/sizeof(heights[0]));
// int numSupplies = (int)(sizeof(supplies)/sizeof(supplies[0]));
// if (nHeight>heights[numHeights-1]) {
// nHeight = heights[numHeights-1];
// }
for (int i=(numHeights-1); i>=0; i--) {
if ( heights[i] <= nHeight ) {
if (i>=0) {
totalSupply = supplies[i];
startBlock = heights[i] + 1;
break;
}
}
}
}
}
if ( nHeight>=1 ) {
for (int i = startBlock; i <= nHeight; i++) {
totalSupply += GetBlockValue( i, 0 );
}
}
return totalSupply;
}
static const int64 nTargetTimespan = 0.25 * 24 * 60 * 60; // CasinoCoin: 0.25 day / 6 hours static const int64 nTargetTimespan = 0.25 * 24 * 60 * 60; // CasinoCoin: 0.25 day / 6 hours
static const int64 nTargetSpacing = 1 * 30; // CasinoCoin: 30 seconds static const int64 nTargetSpacing = 1 * 30; // CasinoCoin: 30 seconds
static const int64 nInterval = nTargetTimespan / nTargetSpacing; static const int64 nInterval = nTargetTimespan / nTargetSpacing;
@@ -3443,6 +3500,26 @@ void static ProcessGetData(CNode* pfrom)
} }
} }
bool static CheckValidClientVersion(int clientVersion)
{
// From block 1575000 onwards version must be 80001 (MIN_PEER_PROTO_VERSION)
// Before that version was 70004
if(pindexBest->nHeight >= 1575000)
{
if(clientVersion < MIN_PEER_PROTO_VERSION)
return false;
else
return true;
}
else
{
if(clientVersion < 70004)
return false;
else
return true;
}
}
bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
{ {
RandAddSeedPerfmon(); RandAddSeedPerfmon();
@@ -3454,10 +3531,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
return true; return true;
} }
if (strCommand == "version") if (strCommand == "version")
{ {
// Each connection can only send one version message // Each connection can only send one version message
@@ -3472,7 +3545,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
CAddress addrFrom; CAddress addrFrom;
uint64 nNonce = 1; uint64 nNonce = 1;
vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe; vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe;
if (pfrom->nVersion < MIN_PEER_PROTO_VERSION) // Check version related to blockheight
if(!CheckValidClientVersion(pfrom->nVersion))
{ {
// disconnect from peers older than this proto version // disconnect from peers older than this proto version
printf("partner %s using obsolete version %i; disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion); printf("partner %s using obsolete version %i; disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
@@ -4441,7 +4515,7 @@ public:
CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
{ {
// Create new block // Create new block
auto_ptr<CBlockTemplate> pblocktemplate(new CBlockTemplate()); std::unique_ptr<CBlockTemplate> pblocktemplate(new CBlockTemplate());
if(!pblocktemplate.get()) if(!pblocktemplate.get())
return NULL; return NULL;
CBlock *pblock = &pblocktemplate->block; // pointer for convenience CBlock *pblock = &pblocktemplate->block; // pointer for convenience
@@ -4809,7 +4883,7 @@ void static CasinoCoinMiner(CWallet *pwallet)
unsigned int nTransactionsUpdatedLast = nTransactionsUpdated; unsigned int nTransactionsUpdatedLast = nTransactionsUpdated;
CBlockIndex* pindexPrev = pindexBest; CBlockIndex* pindexPrev = pindexBest;
auto_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey(reservekey)); std::unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey(reservekey));
if (!pblocktemplate.get()) if (!pblocktemplate.get())
return; return;
CBlock *pblock = &pblocktemplate->block; CBlock *pblock = &pblocktemplate->block;

View File

@@ -54,7 +54,7 @@ static const int64 DUST_SOFT_LIMIT = 100000; // 0.001 CSC
/** Dust Hard Limit, ignored as wallet inputs (mininput default) */ /** Dust Hard Limit, ignored as wallet inputs (mininput default) */
static const int64 DUST_HARD_LIMIT = 1000; // 0.00001 CSC mininput static const int64 DUST_HARD_LIMIT = 1000; // 0.00001 CSC mininput
/** No amount larger than this (in satoshi) is valid */ /** No amount larger than this (in satoshi) is valid */
static const int64 MAX_MONEY = 336000000 * COIN; static const int64 MAX_MONEY = 63000000 * COIN;
inline bool MoneyRange(int64 nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); } inline bool MoneyRange(int64 nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); }
/** Coinbase transaction outputs can only be spent after this number of new blocks (network rule) */ /** Coinbase transaction outputs can only be spent after this number of new blocks (network rule) */
static const int COINBASE_MATURITY = 8; static const int COINBASE_MATURITY = 8;
@@ -191,12 +191,8 @@ CBlockIndex * InsertBlockIndex(uint256 hash);
bool VerifySignature(const CCoins& txFrom, const CTransaction& txTo, unsigned int nIn, unsigned int flags, int nHashType); bool VerifySignature(const CCoins& txFrom, const CTransaction& txTo, unsigned int nIn, unsigned int flags, int nHashType);
/** Abort with a message */ /** Abort with a message */
bool AbortNode(const std::string &msg); bool AbortNode(const std::string &msg);
/** Get total coin supply for block height */
int64 GetTotalCoinSupply(int nHeight, bool noCheckpoints);

View File

@@ -2,37 +2,47 @@
# Distributed under the MIT/X11 software license, see the accompanying # Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
DEPSDIR:=/usr/i686-w64-mingw32 DEPSDIR:=/home/ubuntu/deps/windows
BINPATH=/home/ubuntu/mxe/usr/bin
PREFIX=i686-w64-mingw32.static
BASEDIR=/home/ubuntu/mxe/usr/$(PREFIX)
CC := i686-w64-mingw32-gcc CC=$(BINPATH)/$(PREFIX)-gcc
CXX := i686-w64-mingw32-g++ CXX=$(BINPATH)/$(PREFIX)-g++
CPP=$(BINPATH)/$(PREFIX)-cpp
RANLIB=$(BINPATH)/$(PREFIX)-ranlib
USE_UPNP:=0 USE_UPNP:=0
USE_IPV6:=1 USE_IPV6:=1
INCLUDEPATHS= \ INCLUDEPATHS= \
-I"$(CURDIR)" \ -I"$(CURDIR)" \
-I"$(CURDIR)"/obj \ -I"$(CURDIR)/obj" \
-I"$(DEPSDIR)/include" \ -I"$(DEPSDIR)" \
-I"$(DEPSDIR)" -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
-I"$(DEPSDIR)/openssl-1.0.1h/include" \
-I"$(BASEDIR)/include"
LIBPATHS= \ LIBPATHS= \
-L"$(DEPSDIR)/lib" -L"$(DEPSDIR)/miniupnpc" \
-L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
-L"$(DEPSDIR)/openssl-1.0.1h" \
-L"$(BASEDIR)/lib"
LIBS= \ LIBS= \
$(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a \ $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a \
-l boost_system-mt-s \ -l boost_system-mt \
-l boost_filesystem-mt-s \ -l boost_filesystem-mt \
-l boost_program_options-mt-s \ -l boost_program_options-mt \
-l boost_thread_win32-mt-s \ -l boost_thread_win32-mt \
-l boost_chrono-mt-s \ -l boost_chrono-mt \
-l db_cxx \ -l db_cxx \
-l ssl \ -l ssl \
-l crypto -l crypto
DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE
DEBUGFLAGS=-g DEBUGFLAGS=-g
xCXXFLAGS=-O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) $(CXXFLAGS) xCXXFLAGS=-O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-strict-aliasing $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) $(CXXFLAGS)
# enable: ASLR, DEP and large address aware # enable: ASLR, DEP and large address aware
xLDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static-libgcc -static-libstdc++ $(LDFLAGS) xLDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static-libgcc -static-libstdc++ $(LDFLAGS)
@@ -101,7 +111,7 @@ all: casinocoind.exe
DEFS += -I"$(CURDIR)/leveldb/include" DEFS += -I"$(CURDIR)/leveldb/include"
DEFS += -I"$(CURDIR)/leveldb/helpers" DEFS += -I"$(CURDIR)/leveldb/helpers"
leveldb/libleveldb.a: leveldb/libleveldb.a:
@echo "Building LevelDB ..." && cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && i686-w64-mingw32-ranlib libleveldb.a && i686-w64-mingw32-ranlib libmemenv.a && cd .. @echo "Building LevelDB ..." && cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && $(RANLIB) libleveldb.a && $(RANLIB) libmemenv.a && cd ..
obj/build.h: FORCE obj/build.h: FORCE
/bin/sh ../share/genbuild.sh obj/build.h /bin/sh ../share/genbuild.sh obj/build.h

View File

@@ -4,11 +4,6 @@
# Makefile for the MinGW g++ compiler/toolchain # Makefile for the MinGW g++ compiler/toolchain
# #
# Assumes Berkeley DB, Boost, and OpenSSL have all been compiled and installed
# into /usr/local (/usr/local/include, /usr/local/lib).
#
# If dependencies are somewhere else, run 'make DEPSDIR=/path/'
#
# Boost libraries are given wacky names that include the particular version of # Boost libraries are given wacky names that include the particular version of
# boost you're using; set BOOST_SUFFIX appropriately. # boost you're using; set BOOST_SUFFIX appropriately.
# #
@@ -20,22 +15,21 @@ CXX ?= g++
USE_UPNP:=- USE_UPNP:=-
USE_IPV6:=1 USE_IPV6:=1
DEPSDIR?=/usr/local BOOST_SUFFIX?=-mt
BOOST_SUFFIX?=-mgw46-mt-s-1_53
INCLUDEPATHS= \ INCLUDEPATHS= \
-I"$(CURDIR)" \ -I"$(CURDIR)" \
-I"E:\crypto\deps\boost_1_53_0" \ -I"C:/msys64/usr/src/deps32/boost_1_60_0" \
-I"E:\crypto\deps\db-4.8.30.NC\build_unix" \ -I"C:/msys64/usr/src/deps32/db-4.8.30.NC/build_unix" \
-I"E:\crypto\deps\openssl-1.0.1b\include" \ -I"C:/msys64/usr/src/deps32/openssl-1.0.2g/include" \
-I"E:\crypto\deps\qrencode-3.4.3" -I"C:/msys64/usr/src/deps32/qrencode-3.4.4"
LIBPATHS= \ LIBPATHS= \
-L"$(CURDIR)/leveldb" \ -L"$(CURDIR)/leveldb" \
-L"E:\crypto\deps\boost_1_53_0\stage\lib" \ -L"C:/msys64/usr/src/deps32/boost_1_60_0/stage/lib" \
-L"E:\crypto\deps\db-4.8.30.NC\build_unix" \ -L"C:/msys64/usr/src/deps32/db-4.8.30.NC/build_unix" \
-L"E:\crypto\deps\openssl-1.0.1b" \ -L"C:/msys64/usr/src/deps32/openssl-1.0.2g" \
-L"E:\crypto\deps\qrencode-3.4.3\.libs" -L"C:/msys64/usr/src/deps32/qrencode-3.4.4/.libs"
LIBS= \ LIBS= \
-lleveldb \ -lleveldb \
@@ -51,7 +45,7 @@ LIBS= \
DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE -DUSE_IPV6 -D__NO_SYSTEM_INCLUDES DEFS=-D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE -DUSE_IPV6 -D__NO_SYSTEM_INCLUDES
DEBUGFLAGS=-g DEBUGFLAGS=-g
CFLAGS=-mthreads -O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) -static CFLAGS=-mthreads -O2 -std=c++11 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) -static
# enable: ASLR, DEP and large address aware # enable: ASLR, DEP and large address aware
LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static

View File

@@ -5,18 +5,34 @@
# :=0 --> UPnP support turned off by default at runtime # :=0 --> UPnP support turned off by default at runtime
# :=1 --> UPnP support turned on by default at runtime # :=1 --> UPnP support turned on by default at runtime
# :=- --> No UPnP support - miniupnp not required # :=- --> No UPnP support - miniupnp not required
USE_UPNP:=0 USE_UPNP:=-
# :=1 --> Enable IPv6 support # :=1 --> Enable IPv6 support
# :=0 --> Disable IPv6 support # :=0 --> Disable IPv6 support
USE_IPV6:=1 USE_IPV6:=1
# :=1 --> Enable QR Code support
# :=0 --> Disable QR Code support
USE_QRCODE=1
# define libraries
BOOST_LIB_PATH=$HOME/deps/boost_1_60_0/stage/lib
BDB_LIB_PATH=$HOME/deps/db-5.1.29.NC/build_unix
OPENSSL_LIB_PATH=$HOME/deps/openssl-1.0.2g
MINIUPNPC_LIB_PATH=$HOME/deps/miniupnpc-1.9
# define includes
BOOST_INCLUDE_PATH=$HOME/deps/boost_1_60_0
BDB_INCLUDE_PATH=$HOME/deps/db-5.1.29.NC/build_unix
OPENSSL_INCLUDE_PATH=$HOME/deps/openssl-1.0.2g
MINIUPNPC_INCLUDE_PATH=$HOME/deps/miniupnpc-1.9
LINK:=$(CXX) LINK:=$(CXX)
DEFS=-DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 DEFS=-DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64
DEFS += $(addprefix -I,$(CURDIR) $(CURDIR)/obj $(BOOST_INCLUDE_PATH) $(BDB_INCLUDE_PATH) $(OPENSSL_INCLUDE_PATH)) DEFS += $(addprefix -I,$(CURDIR) $(CURDIR)/obj $(BOOST_INCLUDE_PATH) $(BDB_INCLUDE_PATH) $(OPENSSL_INCLUDE_PATH) $(MINIUPNPC_INCLUDE_PATH))
LIBS = $(addprefix -L,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH)) LIBS = $(addprefix -L,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH) $(MINIUPNPC_LIB_PATH))
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data) TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
@@ -103,7 +119,7 @@ DEBUGFLAGS=-g
# CXXFLAGS can be specified on the make command line, so we use xCXXFLAGS that only # CXXFLAGS can be specified on the make command line, so we use xCXXFLAGS that only
# adds some defaults in front. Unfortunately, CXXFLAGS=... $(CXXFLAGS) does not work. # adds some defaults in front. Unfortunately, CXXFLAGS=... $(CXXFLAGS) does not work.
xCXXFLAGS=-O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \ xCXXFLAGS=-O2 -std=c++14 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \
$(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS) $(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS)
# LDFLAGS can be specified on the make command line, so we use xLDFLAGS that only # LDFLAGS can be specified on the make command line, so we use xLDFLAGS that only

View File

@@ -1192,15 +1192,23 @@ void MapPort(bool)
// The first name is used as information source for addrman. // The first name is used as information source for addrman.
// The second name should resolve to a list of seed addresses. // The second name should resolve to a list of seed addresses.
static const char *strMainNetDNSSeed[][2] = { static const char *strMainNetDNSSeed[][2] = {
{"casinoco.in seed", "seed.casinoco.in"}, {"casinocoin.org seed", "seed1.casinocoin.info"},
{"casinoco.in seed #1", "seed1.casinoco.in"}, {"casinocoin.org seed s", "seed.casinocoin.org"},
{"casinoco.in seed #2", "seed2.casinoco.in"}, {"casinocoin.org seed t", "seed.dig0.com"},
{"casinoco.in seed #3", "seed3.casinoco.in"}, {"casinocoin.org seed #1", "seed2.casinocoin.info"},
{"casinocoin.org seed #1s", "seed1.casinocoin.org"},
{"casinocoin.org seed #1t", "seed1.dig0.com"},
{"casinocoin.org seed #2", "seed3.casinocoin.info"},
{"casinocoin.org seed #2s", "seed2.casinocoin.org"},
{"casinocoin.org seed #2t", "seed2.dig0.com"},
{"casinocoin.org seed #3", "seed4.casinocoin.info"},
{"casinocoin.org seed #3s", "seed3.casinocoin.org"},
{"casinocoin.org seed #4", "seed5.casinocoin.info"},
{NULL, NULL} {NULL, NULL}
}; };
static const char *strTestNetDNSSeed[][2] = { static const char *strTestNetDNSSeed[][2] = {
{"casinoco.in testnet seed #1", "testnet-seed1.casinoco.in"}, {"casinocoin.org testnet seed #1", "testnet-seed1.casinocoin.org"},
{NULL, NULL} {NULL, NULL}
}; };

View File

@@ -1 +1 @@
To avoid compile error. -To avoid compile error.

View File

@@ -0,0 +1,59 @@
#include "casinocoinwebapi.h"
#include <QSsl>
#include <QDebug>
const QString CasinoCoinWebAPI::s_strServerAddress = "http://api.csc.dig0.com/";
const QString CasinoCoinWebAPI::s_strServerEndpoint = "CSCPublicAPI";
CasinoCoinWebAPI::CasinoCoinWebAPI( QObject*a_pParent )
: QObject(a_pParent )
{
connect( &m_oNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotParseNetworkResponse(QNetworkReply*)));
}
void CasinoCoinWebAPI::GetActivePromotions()
{
Get( s_strServerAddress + s_strServerEndpoint + "/ActivePromotions" );
}
void CasinoCoinWebAPI::GetActiveCasinos()
{
Get( s_strServerAddress + s_strServerEndpoint + "/ActiveCasinos" );
}
void CasinoCoinWebAPI::GetActiveNewsItems()
{
Get( s_strServerAddress + s_strServerEndpoint + "/ActiveNewsItems" );
}
void CasinoCoinWebAPI::GetActiveExchanges()
{
Get( s_strServerAddress + s_strServerEndpoint + "/ActiveExchanges" );
}
void CasinoCoinWebAPI::GetCoinInfo()
{
Get( s_strServerAddress + s_strServerEndpoint + "/CoinInfo" );
}
void CasinoCoinWebAPI::Get( const QString& a_rUrl )
{
QUrl oUrl ( a_rUrl );
QNetworkRequest oNetworkRequest ( oUrl );
m_oNetworkAccessManager.get( oNetworkRequest );
}
void CasinoCoinWebAPI::slotParseNetworkResponse( QNetworkReply *finished )
{
if ( finished->error() != QNetworkReply::NoError )
{
// A communication error has occurred
qDebug() << "API Network Error: " << finished->errorString();
emit signalNetworkError( finished->error(), finished->request().url() );
return;
}
QByteArray data = finished->readAll();
emit signalResponseReady( data );
}

View File

@@ -0,0 +1,41 @@
#ifndef CASINOCOINWEBAPI_H
#define CASINOCOINWEBAPI_H
#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class CasinoCoinWebAPI : public QObject
{
Q_OBJECT
public:
explicit CasinoCoinWebAPI( QObject* a_pParent = 0 );
virtual ~CasinoCoinWebAPI(){}
void GetActivePromotions();
void GetActiveCasinos();
void GetActiveNewsItems();
void GetActiveExchanges();
void GetCoinInfo();
static const QString s_strServerAddress;
static const QString s_strServerEndpoint;
signals:
void signalResponseReady( const QByteArray& a_rJsonFile );
void signalNetworkError
( QNetworkReply::NetworkError a_eError
, const QUrl a_rFailedUrl
);
public slots:
void slotParseNetworkResponse( QNetworkReply *finished );
private:
void Get( const QString& a_rUrl );
QNetworkAccessManager m_oNetworkAccessManager;
};
#endif // CASINOCOINWEBAPI_H

View File

@@ -0,0 +1,140 @@
#include "casinocoinwebapiparser.h"
#include "util.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QDebug>
#include <QDir>
#include <QFile>
CasinoCoinWebAPIParser::CasinoCoinWebAPIParser( QObject* a_pParent )
: QObject(a_pParent)
{
}
void CasinoCoinWebAPIParser::slotParseAnswer( const QByteArray& a_rJsonFile )
{
QJsonParseError oError;
QJsonDocument jsonDoc = QJsonDocument::fromJson( a_rJsonFile, &oError );
if ( oError.error == QJsonParseError::NoError )
{
QJsonObject docAsObject = jsonDoc.object();
if ( docAsObject.find( "Result" ).value().isObject() )
{
QJsonObject jsonObjectResult = docAsObject.find( "Result" ).value().toObject();
if ( jsonObjectResult.find( "ActivePromotions" ).value().isArray() )
{
StoreFile( "ActivePromotions", a_rJsonFile );
ParsePromotions( docAsObject );
}
else if ( jsonObjectResult.find( "ActiveNewsItems" ).value().isArray() )
{
StoreFile( "ActiveNewsItems", a_rJsonFile );
ParseNewsItems( docAsObject );
}
else if ( jsonObjectResult.find( "ActiveCasinos" ).value().isArray() )
{
StoreFile( "ActiveCasinos", a_rJsonFile );
ParseCasinos( docAsObject );
}
else if ( jsonObjectResult.find( "ActiveExchanges" ).value().isArray() )
{
StoreFile( "ActiveExchanges", a_rJsonFile );
ParseExchanges( docAsObject );
}
else if ( jsonObjectResult.find( "CoinInfo" ).value().isObject() )
{
StoreFile( "CoinInfo", a_rJsonFile );
ParseCoinInfo( docAsObject );
}
}
else
{
qDebug() << "CasinoCoinWebAPIParser -> No Result object found: " << docAsObject.begin().key();
}
}
else
{
qDebug() << "CasinoCoinWebAPIParser -> Parse Error: " << oError.errorString();
}
}
void CasinoCoinWebAPIParser::slotNetworkError( QNetworkReply::NetworkError a_eError
, const QUrl a_rFailedUrl
)
{
qDebug() << "network error: " << a_eError;
QString strAccessedUrl = a_rFailedUrl.toString().split("/").last();
slotParseAnswer( ReadFile( strAccessedUrl ) );
}
void CasinoCoinWebAPIParser::ParsePromotions( const QJsonObject& a_rJsonPromotions )
{
qDebug() << "ParsePromotions";
emit signalActivePromotionsParsed( new JsonActivePromotionsParser( a_rJsonPromotions ) );
}
void CasinoCoinWebAPIParser::ParseCasinos( const QJsonObject& a_rJsonCasinos )
{
qDebug() << "Coming soon - ParseCasinos";
qDebug() << a_rJsonCasinos;
}
void CasinoCoinWebAPIParser::ParseExchanges( const QJsonObject& a_rJsonExchanges )
{
qDebug() << "ParseExchanges";
emit signalActiveExchangesParsed( new JsonActiveExchangesParser( a_rJsonExchanges ) );
}
void CasinoCoinWebAPIParser::ParseNewsItems( const QJsonObject& a_rJsonNewsItems )
{
qDebug() << "Coming soon - ParseNewsItems";
qDebug() << a_rJsonNewsItems;
}
void CasinoCoinWebAPIParser::ParseCoinInfo( const QJsonObject& a_rJsonCoinInfo )
{
qDebug() << "ParseCoinInfo";
emit signalCoinInfoParsed( new JsonCoinInfoParser( a_rJsonCoinInfo ) );
}
QByteArray CasinoCoinWebAPIParser::ReadFile( QString a_strSourcePath )
{
QByteArray strAnswer;
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 );
}
else
{
strAnswer = fileOutput.readAll();
fileOutput.close();
}
return strAnswer;
}
void CasinoCoinWebAPIParser::StoreFile( QString a_strDestinationPath, const QByteArray& a_rJsonFile )
{
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 );
}
else
{
fileOutput.write( a_rJsonFile );
fileOutput.close();
}
}

View File

@@ -0,0 +1,45 @@
#ifndef CASINOCOINWEBAPIPARSER_H
#define CASINOCOINWEBAPIPARSER_H
#include <QObject>
#include "jsonactivepromotionsparser.h"
#include "jsonsingleactivepromotion.h"
#include "jsoncoininfoparser.h"
#include "jsonactiveexchangesparser.h"
#include "jsonsingleactiveexchange.h"
#include <QNetworkReply>
class CasinoCoinWebAPIParser : public QObject
{
Q_OBJECT
public:
explicit CasinoCoinWebAPIParser( QObject* a_pParent = 0 );
signals:
void signalActivePromotionsParsed( JsonActivePromotionsParser* a_pActivePromotions );
void signalCoinInfoParsed( JsonCoinInfoParser* a_pCoinInfo );
// void signalActiveCasinosParsed( JsonActiveCasinosParser* a_pActivePromotions );
void signalActiveExchangesParsed( JsonActiveExchangesParser* a_pActiveExchanges );
// void signalActiveNewsItemsParsed( JsonActiveNewsItemsParser* a_pActivePromotions );
public slots:
void slotParseAnswer( const QByteArray& a_rJsonFile );
void slotNetworkError
( QNetworkReply::NetworkError a_eError
, const QUrl a_rFailedUrl
);
private:
void ParsePromotions( const QJsonObject& a_rJsonPromotions );
void ParseCasinos ( const QJsonObject& a_rJsonCasinos );
void ParseExchanges ( const QJsonObject& a_rJsonExchanges );
void ParseNewsItems ( const QJsonObject& a_rJsonNewsItems );
void ParseCoinInfo ( const QJsonObject& a_rJsonCoinInfo );
QByteArray ReadFile( QString a_strSourcePath );
void StoreFile( QString a_strDestinationPath, const QByteArray& a_rJsonFile );
};
#endif // CASINOCOINWEBAPIPARSER_H

View File

@@ -0,0 +1,54 @@
#include "jsonactiveexchangesparser.h"
#include "../qtquick_controls/cpp/qmlimageprovider.h"
#include <QDebug>
JsonActiveExchangesParser::JsonActiveExchangesParser()
{
}
JsonActiveExchangesParser::JsonActiveExchangesParser( const QJsonObject& a_rOther )
: QJsonObject( a_rOther )
{
ResolveExchangesArray();
}
void JsonActiveExchangesParser::ResolveExchangesArray()
{
if ( find( "Result" ).value().isObject() )
{
if ( find( "Result" ).value().toObject().find( "ActiveExchanges" ).value().isArray() )
{
QJsonArray arrayOfExchangeDescriptors( find( "Result" ).value().toObject().find( "ActiveExchanges" ).value().toArray() );
foreach( QJsonValue singleExchangeDescriptor, arrayOfExchangeDescriptors )
{
if ( singleExchangeDescriptor.isObject() )
{
m_aActiveExchanges.append( JsonSingleActiveExchange( singleExchangeDescriptor.toObject() ) );
}
}
}
}
}
const QList<JsonSingleActiveExchange>& JsonActiveExchangesParser::GetExchanges() const
{
return m_aActiveExchanges;
}
QList<JsonSingleActiveExchange>& JsonActiveExchangesParser::GetExchanges()
{
return m_aActiveExchanges;
}
void JsonActiveExchangesParser::AddImagesToPool( QmlImageProvider* a_pImageProvider )
{
if ( a_pImageProvider )
{
foreach( JsonSingleActiveExchange oExchange, m_aActiveExchanges )
{
a_pImageProvider->AddToImagePool( oExchange.getImageName(), oExchange.getExchangeImage() );
}
}
}

View File

@@ -0,0 +1,31 @@
#ifndef JSONACTIVEEXCHANGESPARSER_H
#define JSONACTIVEEXCHANGESPARSER_H
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QList>
#include "jsonsingleactiveexchange.h"
class QmlImageProvider;
class JsonActiveExchangesParser : public QJsonObject
{
public:
JsonActiveExchangesParser();
JsonActiveExchangesParser( const QJsonObject& a_rOther );
virtual ~JsonActiveExchangesParser(){}
const QList<JsonSingleActiveExchange>& GetExchanges() const;
QList<JsonSingleActiveExchange>& GetExchanges();
void AddImagesToPool( QmlImageProvider* a_pImageProvider );
private:
void ResolveExchangesArray();
QList<JsonSingleActiveExchange> m_aActiveExchanges;
};
#endif // JSONACTIVEEXCHANGESPARSER_H

View File

@@ -0,0 +1,54 @@
#include "jsonactivepromotionsparser.h"
#include "../qtquick_controls/cpp/qmlimageprovider.h"
#include <QDebug>
JsonActivePromotionsParser::JsonActivePromotionsParser()
{
}
JsonActivePromotionsParser::JsonActivePromotionsParser( const QJsonObject& a_rOther )
: QJsonObject( a_rOther )
{
ResolvePromotionsArray();
}
void JsonActivePromotionsParser::ResolvePromotionsArray()
{
if ( find( "Result" ).value().isObject() )
{
if ( find( "Result" ).value().toObject().find( "ActivePromotions" ).value().isArray() )
{
QJsonArray arrayOfCasinoDescriptors( find( "Result" ).value().toObject().find( "ActivePromotions" ).value().toArray() );
foreach( QJsonValue singleCasinoDescriptor, arrayOfCasinoDescriptors )
{
if ( singleCasinoDescriptor.isObject() )
{
m_aActivePromotions.append( JsonSingleActivePromotion( singleCasinoDescriptor.toObject() ) );
}
}
}
}
}
const QList<JsonSingleActivePromotion>& JsonActivePromotionsParser::GetPromotions() const
{
return m_aActivePromotions;
}
QList<JsonSingleActivePromotion>& JsonActivePromotionsParser::GetPromotions()
{
return m_aActivePromotions;
}
void JsonActivePromotionsParser::AddImagesToPool( QmlImageProvider* a_pImageProvider )
{
if ( a_pImageProvider )
{
foreach( JsonSingleActivePromotion oPromotion, m_aActivePromotions )
{
a_pImageProvider->AddToImagePool( oPromotion.GetImageName(), oPromotion.GetAdvertImage() );
}
}
}

View File

@@ -0,0 +1,31 @@
#ifndef JSONACTIVEPROMOTIONSPARSER_H
#define JSONACTIVEPROMOTIONSPARSER_H
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QList>
#include "jsonsingleactivepromotion.h"
class QmlImageProvider;
class JsonActivePromotionsParser : public QJsonObject
{
public:
JsonActivePromotionsParser();
JsonActivePromotionsParser( const QJsonObject& a_rOther );
virtual ~JsonActivePromotionsParser(){}
const QList<JsonSingleActivePromotion>& GetPromotions() const;
QList<JsonSingleActivePromotion>& GetPromotions();
void AddImagesToPool( QmlImageProvider* a_pImageProvider );
private:
void ResolvePromotionsArray();
QList<JsonSingleActivePromotion> m_aActivePromotions;
};
#endif // JSONACTIVEPROMOTIONSPARSER_H

View File

@@ -0,0 +1,29 @@
#include "jsoncoininfoparser.h"
#include <QDebug>
JsonCoinInfoParser::JsonCoinInfoParser()
{
}
JsonCoinInfoParser::JsonCoinInfoParser( const QJsonObject& apiResult )
: QJsonObject( apiResult )
{
qDebug() << "JsonCoinInfoParser: " << apiResult.begin().key();
if ( apiResult.find( "Result" ).value().isObject() )
{
if ( apiResult.find( "Result" ).value().toObject().find( "CoinInfo" ).value().isObject() )
{
coinInfoObject = apiResult.find( "Result" ).value().toObject().find( "CoinInfo" ).value().toObject();
}
else
{
qDebug()<<"JsonCoinInfoParser first key: " << apiResult.find( "Result" ).value().toObject().begin().key();
}
}
}
const QJsonObject& JsonCoinInfoParser::getCoinInfo() const
{
return coinInfoObject;
}

View File

@@ -0,0 +1,20 @@
#ifndef JSONCOININFOPARSER_H
#define JSONCOININFOPARSER_H
#include <QJsonObject>
#include <QJsonValue>
class JsonCoinInfoParser : public QJsonObject
{
public:
JsonCoinInfoParser();
JsonCoinInfoParser( const QJsonObject& a_rOther );
virtual ~JsonCoinInfoParser(){}
const QJsonObject& getCoinInfo() const;
private:
QJsonObject coinInfoObject;
};
#endif // JSONCOININFOPARSER_H

View File

@@ -0,0 +1,42 @@
#include "jsonsingleactiveexchange.h"
#include <QFile>
#include <QImage>
#include <QDir>
#include <QDebug>
JsonSingleActiveExchange::JsonSingleActiveExchange()
{
}
JsonSingleActiveExchange::JsonSingleActiveExchange( const QJsonObject& a_rOther )
: QJsonObject( a_rOther )
{
m_strImageName = find( "exchange_name" ).value().toString().remove( getRestrictedCharacters() );
storeImage();
m_strExchangeName = find( "exchange_name" ).value().toString().remove( getRestrictedCharacters() );
m_strAccessUrl = find( "access_url" ).value().toString();
m_strDescription = find( "description" ).value().toString();
m_dblLastBidPriceBTC = find( "last_bid_price_btc" ).value().toDouble();
m_dblLastAskPriceBTC = find( "last_ask_price_btc" ).value().toDouble();
m_dblLastPriceBTC = find( "last_price_btc" ).value().toDouble();
m_dblVolume24H = find( "volume24h" ).value().toDouble();
m_strLastUpdateTime = find( "last_update_time" ).value().toString();
}
QRegExp JsonSingleActiveExchange::getRestrictedCharacters()
{
return QRegExp( "[<,>|\\:()&;#?*% ]" );
}
void JsonSingleActiveExchange::storeImage()
{
if ( find( "image_mime_type" ).value().toString().split( "/" ).first().contains( "image" ) )
{
QByteArray binaryData = QByteArray::fromBase64( find( "exchange_image" ).value().toString().toLocal8Bit() );
m_oExchangeImage = QImage::fromData( binaryData );
}
}

View File

@@ -0,0 +1,46 @@
#ifndef JSONSINGLEACTIVEEXCHANGE_H
#define JSONSINGLEACTIVEEXCHANGE_H
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QImage>
class JsonSingleActiveExchange : public QJsonObject
{
public:
JsonSingleActiveExchange();
JsonSingleActiveExchange( const QJsonObject& a_rOther );
virtual ~JsonSingleActiveExchange(){}
QString getImageName() const{ return m_strImageName; }
QImage getExchangeImage() const { return m_oExchangeImage; }
QString getExchangeName() const{ return m_strExchangeName; }
QString getAccessUrl() const{ return m_strAccessUrl; }
QString getDescription() const{ return m_strDescription; }
double getLastBidPriceBTC() const{ return m_dblLastBidPriceBTC; }
double getLastAskPriceBTC() const{ return m_dblLastAskPriceBTC; }
double getLastPriceBTC() const{ return m_dblLastPriceBTC; }
double getVolume24H() const{ return m_dblVolume24H; }
QString getLastUpdateTime() const{ return m_strLastUpdateTime; }
private:
void storeImage();
static QRegExp getRestrictedCharacters();
QString m_strImageName;
QImage m_oExchangeImage;
QString m_strExchangeName;
QString m_strAccessUrl;
QString m_strDescription;
double m_dblLastBidPriceBTC;
double m_dblLastAskPriceBTC;
double m_dblLastPriceBTC;
double m_dblVolume24H;
QString m_strLastUpdateTime;
};
#endif // JSONSINGLEACTIVEEXCHANGE_H

View File

@@ -0,0 +1,34 @@
#include "jsonsingleactivepromotion.h"
#include <QFile>
#include <QImage>
#include <QDir>
#include <QDebug>
JsonSingleActivePromotion::JsonSingleActivePromotion()
{
}
JsonSingleActivePromotion::JsonSingleActivePromotion( const QJsonObject& a_rOther )
: QJsonObject( a_rOther )
{
m_strImageName = find( "promotion_title" ).value().toString().remove( GetRestrictedCharacters() );
StoreImage();
}
QRegExp JsonSingleActivePromotion::GetRestrictedCharacters()
{
return QRegExp( "[<,>|\\:()&;#?*% ]" );
}
void JsonSingleActivePromotion::StoreImage()
{
if ( find( "image_mime_type" ).value().toString().split( "/" ).first().contains( "image" ) )
{
QByteArray binaryData = QByteArray::fromBase64( find( "promotion_image" ).value().toString().toLocal8Bit() );
m_oAdvertImage = QImage::fromData( binaryData );
}
}

View File

@@ -0,0 +1,29 @@
#ifndef JSONSINGLEACTIVEPROMOTION_H
#define JSONSINGLEACTIVEPROMOTION_H
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QImage>
class JsonSingleActivePromotion : public QJsonObject
{
public:
JsonSingleActivePromotion();
JsonSingleActivePromotion( const QJsonObject& a_rOther );
virtual ~JsonSingleActivePromotion(){}
QString GetImageName() const{ return m_strImageName; }
QImage GetAdvertImage() const { return m_oAdvertImage; }
private:
void StoreImage();
static QRegExp GetRestrictedCharacters();
QString m_strImageName;
QImage m_oAdvertImage;
};
#endif // JSONSINGLEACTIVEPROMOTION_H

View File

@@ -6,7 +6,7 @@
// Copyright year (2009-this) // Copyright year (2009-this)
// Todo: update this when changing our copyright comments in the source // Todo: update this when changing our copyright comments in the source
const int ABOUTDIALOG_COPYRIGHT_YEAR = 2013; const int ABOUTDIALOG_COPYRIGHT_YEAR = 2015;
AboutDialog::AboutDialog(QWidget *parent) : AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent), QDialog(parent),
@@ -15,7 +15,9 @@ AboutDialog::AboutDialog(QWidget *parent) :
ui->setupUi(this); ui->setupUi(this);
// Set current copyright year // Set current copyright year
ui->copyrightLabel->setText(tr("Copyright") + QString(" &copy; 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin developers") + QString("<br>") + tr("Copyright") + QString(" &copy; ") + tr("2013-%1 The CasinoCoin developers").arg(ABOUTDIALOG_COPYRIGHT_YEAR)); ui->copyrightLabel->setText(tr("Copyright") + QString(" &copy; 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin developers") + QString("<br>") +
tr("Copyright") + QString(" &copy; ") + tr("2013-%1 The CasinoCoin developers").arg(ABOUTDIALOG_COPYRIGHT_YEAR) + QString("<br>") +
tr("Copyright") + QString(" &copy; ") + tr("2015 - GUI 2.0 Design by Felix Rojauro (felix.rojauro@gmail.com)"));
} }
void AboutDialog::setModel(ClientModel *model) void AboutDialog::setModel(ClientModel *model)

View File

@@ -8,6 +8,8 @@
#include "csvmodelwriter.h" #include "csvmodelwriter.h"
#include "guiutil.h" #include "guiutil.h"
#include "gui20_skin.h"
#ifdef USE_QRCODE #ifdef USE_QRCODE
#include "qrcodedialog.h" #include "qrcodedialog.h"
#endif #endif
@@ -26,7 +28,6 @@ AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) :
tab(tab) tab(tab)
{ {
ui->setupUi(this); ui->setupUi(this);
#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac #ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac
ui->newAddress->setIcon(QIcon()); ui->newAddress->setIcon(QIcon());
ui->copyAddress->setIcon(QIcon()); ui->copyAddress->setIcon(QIcon());

View File

@@ -6,6 +6,7 @@
#include "wallet.h" #include "wallet.h"
#include "base58.h" #include "base58.h"
#include <QDebug>
#include <QFont> #include <QFont>
const QString AddressTableModel::Send = "S"; const QString AddressTableModel::Send = "S";
@@ -424,3 +425,24 @@ void AddressTableModel::emitDataChanged(int idx)
{ {
emit dataChanged(index(idx, 0, QModelIndex()), index(idx, columns.length()-1, QModelIndex())); emit dataChanged(index(idx, 0, QModelIndex()), index(idx, columns.length()-1, QModelIndex()));
} }
/* Look up address for label in address book, if not found return empty string.
*/
QString AddressTableModel::addressForLabel(const QString &label) const
{
LOCK(wallet->cs_wallet);
QString walletAddress = "";
// loop over addressbook values to find the key
std::map<CTxDestination, std::string>::iterator it;
for( it = wallet->mapAddressBook.begin(); it != wallet->mapAddressBook.end(); it++)
{
qDebug() << "Label Value: " << QString::fromStdString(it->second);
if (it->second.compare(label.toStdString()) == 0)
{
CTxDestination dest = it->first;
walletAddress = QString::fromStdString(CBitcoinAddress(dest).ToString());
break;
}
}
return walletAddress;
}

View File

@@ -69,6 +69,10 @@ public:
EditStatus getEditStatus() const { return editStatus; } EditStatus getEditStatus() const { return editStatus; }
/* Look up address for label in address book, if not found return empty string.
*/
QString addressForLabel(const QString &label) const;
private: private:
WalletModel *walletModel; WalletModel *walletModel;
CWallet *wallet; CWallet *wallet;

View File

@@ -3,6 +3,7 @@
#include "guiconstants.h" #include "guiconstants.h"
#include "walletmodel.h" #include "walletmodel.h"
#include "version.h"
#include <QMessageBox> #include <QMessageBox>
#include <QPushButton> #include <QPushButton>
@@ -98,7 +99,8 @@ void AskPassphraseDialog::accept()
break; break;
} }
QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm wallet encryption"), QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm wallet encryption"),
tr("Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR CASINOCOINS</b>!") + "<br><br>" + tr("Are you sure you wish to encrypt your wallet?"), tr((std::string("Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR ")
+ COIN_NAME_DISPLAY + "</b>!").c_str()) + "<br><br>" + tr("Are you sure you wish to encrypt your wallet?"),
QMessageBox::Yes|QMessageBox::Cancel, QMessageBox::Yes|QMessageBox::Cancel,
QMessageBox::Cancel); QMessageBox::Cancel);
if(retval == QMessageBox::Yes) if(retval == QMessageBox::Yes)
@@ -109,9 +111,9 @@ void AskPassphraseDialog::accept()
{ {
QMessageBox::warning(this, tr("Wallet encrypted"), QMessageBox::warning(this, tr("Wallet encrypted"),
"<qt>" + "<qt>" +
tr("CasinoCoin will close now to finish the encryption process. " tr((std::string("")+ COIN_NAME_DISPLAY + " will close now to finish the encryption process. "
"Remember that encrypting your wallet cannot fully protect " "Remember that encrypting your wallet cannot fully protect "
"your casinocoins from being stolen by malware infecting your computer.") + "your "+ COIN_NAME + " from being stolen by malware infecting your computer.").c_str()) +
"<br><br><b>" + "<br><br><b>" +
tr("IMPORTANT: Any previous backups you have made of your wallet file " tr("IMPORTANT: Any previous backups you have made of your wallet file "
"should be replaced with the newly generated, encrypted wallet file. " "should be replaced with the newly generated, encrypted wallet file. "

View File

@@ -91,7 +91,7 @@ static void InitMessage(const std::string &message)
{ {
if(splashref) if(splashref)
{ {
splashref->showMessage(QString::fromStdString(message), Qt::AlignBottom|Qt::AlignHCenter, QColor(55,55,55)); splashref->showMessage(QString::fromStdString(message), Qt::AlignBottom|Qt::AlignHCenter, QColor(Qt::black));
qApp->processEvents(); qApp->processEvents();
} }
printf("init message: %s\n", message.c_str()); printf("init message: %s\n", message.c_str());
@@ -110,7 +110,7 @@ static std::string Translate(const char* psz)
static void handleRunawayException(std::exception *e) static void handleRunawayException(std::exception *e)
{ {
PrintExceptionContinue(e, "Runaway exception"); PrintExceptionContinue(e, "Runaway exception");
QMessageBox::critical(0, "Runaway exception", BitcoinGUI::tr("A fatal error occurred. CasinoCoin can no longer continue safely and will quit.") + QString("\n\n") + QString::fromStdString(strMiscWarning)); QMessageBox::critical(0, "Runaway exception", BitcoinGUI::tr(("A fatal error occurred. "+ COIN_NAME_DISPLAY + " can no longer continue safely and will quit.").c_str()) + QString("\n\n") + QString::fromStdString(strMiscWarning));
exit(1); exit(1);
} }
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
{ {
// This message can not be translated, as translation is not initialized yet // This message can not be translated, as translation is not initialized yet
// (which not yet possible because lang=XX can be overridden in bitcoin.conf in the data directory) // (which not yet possible because lang=XX can be overridden in bitcoin.conf in the data directory)
QMessageBox::critical(0, "CasinoCoin", QMessageBox::critical(0, COIN_NAME_DISPLAY.c_str(),
QString("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(mapArgs["-datadir"]))); QString("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(mapArgs["-datadir"])));
return 1; return 1;
} }
@@ -154,12 +154,12 @@ int main(int argc, char *argv[])
// Application identification (must be set before OptionsModel is initialized, // Application identification (must be set before OptionsModel is initialized,
// as it is used to locate QSettings) // as it is used to locate QSettings)
QApplication::setOrganizationName("CasinoCoin"); QApplication::setOrganizationName(COIN_NAME_DISPLAY.c_str());
QApplication::setOrganizationDomain("casinocoin.org"); QApplication::setOrganizationDomain("casinocoin.org");
if(GetBoolArg("-testnet")) // Separate UI settings for testnet if(GetBoolArg("-testnet")) // Separate UI settings for testnet
QApplication::setApplicationName("CasinoCoin-Qt-testnet"); QApplication::setApplicationName((""+ COIN_NAME_DISPLAY + "-Qt-testnet").c_str());
else else
QApplication::setApplicationName("CasinoCoin-Qt"); QApplication::setApplicationName((""+ COIN_NAME_DISPLAY + "-Qt").c_str());
// ... then GUI settings: // ... then GUI settings:
OptionsModel optionsModel; OptionsModel optionsModel;
@@ -292,12 +292,14 @@ int main(int argc, char *argv[])
threadGroup.interrupt_all(); threadGroup.interrupt_all();
threadGroup.join_all(); threadGroup.join_all();
Shutdown(); Shutdown();
pollShutdownTimer->stop();
} }
else else
{ {
threadGroup.interrupt_all(); threadGroup.interrupt_all();
threadGroup.join_all(); threadGroup.join_all();
Shutdown(); Shutdown();
pollShutdownTimer->stop();
return 1; return 1;
} }
} catch (std::exception& e) { } catch (std::exception& e) {

View File

@@ -1,4 +1,4 @@
<!DOCTYPE RCC><RCC version="1.0"> <RCC>
<qresource prefix="/icons"> <qresource prefix="/icons">
<file alias="bitcoin">res/icons/bitcoin.png</file> <file alias="bitcoin">res/icons/bitcoin.png</file>
<file alias="address-book">res/icons/address-book.png</file> <file alias="address-book">res/icons/address-book.png</file>
@@ -40,12 +40,38 @@
<file alias="filesave">res/icons/filesave.png</file> <file alias="filesave">res/icons/filesave.png</file>
<file alias="qrcode">res/icons/qrcode.png</file> <file alias="qrcode">res/icons/qrcode.png</file>
<file alias="debugwindow">res/icons/debugwindow.png</file> <file alias="debugwindow">res/icons/debugwindow.png</file>
<file alias="advertsArrowLeft">res/icons/adverts_arrow_left.png</file>
<file alias="advertsArrowLeftHover">res/icons/adverts_arrow_left_hover.png</file>
<file alias="advertsArrowRight">res/icons/adverts_arrow_right.png</file>
<file alias="advertsArrowRightHover">res/icons/adverts_arrow_right_hover.png</file>
<file>res/icons/GUI20_mainToolBar_transactions.png</file>
<file>res/icons/GUI20_mainToolBar_transactions_hover.png</file>
<file>res/icons/GUI20_mainToolBar_send.png</file>
<file>res/icons/GUI20_mainToolBar_send_hover.png</file>
<file>res/icons/GUI20_mainToolBar_redeemprypto.png</file>
<file>res/icons/GUI20_mainToolBar_redeemprypto_hover.png</file>
<file>res/icons/GUI20_mainToolBar_receive.png</file>
<file>res/icons/GUI20_mainToolBar_receive_hover.png</file>
<file>res/icons/GUI20_mainToolBar_overview.png</file>
<file>res/icons/GUI20_mainToolBar_overview_hover.png</file>
<file>res/icons/GUI20_mainToolBar_info.png</file>
<file>res/icons/GUI20_mainToolBar_info_hover.png</file>
<file>res/icons/GUI20_mainToolBar_contacts.png</file>
<file>res/icons/GUI20_mainToolBar_contacts_hover.png</file>
<file>res/icons/prypto.png</file>
<file alias="checkboxTick">res/icons/checkbox_tick.png</file>
<file alias="advertsArrowDownHover">res/icons/adverts_arrow_bottom_hover.png</file>
<file alias="advertsArrowDown">res/icons/adverts_arrow_bottom.png</file>
<file alias="advertsArrowUp">res/icons/adverts_arrow_top.png</file>
<file alias="advertsArrowUpHover">res/icons/adverts_arrow_top_hover.png</file>
<file alias="radiobuttonTick">res/icons/radiobutton_tick.png</file>
</qresource> </qresource>
<qresource prefix="/images"> <qresource prefix="/images">
<file alias="about">res/images/about.png</file> <file alias="about">res/images/about.png</file>
<file alias="splash">res/images/splash.png</file> <file alias="splash">res/images/splash.png</file>
<file alias="splash_testnet">res/images/splash_testnet.png</file> <file alias="splash_testnet">res/images/splash_testnet.png</file>
<file alias="backg">res/images/wallet.png</file> <file alias="backg">res/images/wallet.png</file>
<file>res/images/GUI20_mainToolBar_cards.png</file>
</qresource> </qresource>
<qresource prefix="/movies"> <qresource prefix="/movies">
<file alias="update_spinner">res/movies/update_spinner.mng</file> <file alias="update_spinner">res/movies/update_spinner.mng</file>
@@ -99,4 +125,21 @@
<file alias="zh_CN">locale/bitcoin_zh_CN.qm</file> <file alias="zh_CN">locale/bitcoin_zh_CN.qm</file>
<file alias="zh_TW">locale/bitcoin_zh_TW.qm</file> <file alias="zh_TW">locale/bitcoin_zh_TW.qm</file>
</qresource> </qresource>
<qresource prefix="/qml">
<file>qtquick_controls/qml/QmlGUIBannerControl.qml</file>
<file>qtquick_controls/qml/QmlGUIBannerListView.qml</file>
<file>qtquick_controls/qml/QmlGUIBannerWindow.qml</file>
<file>qtquick_controls/qml/QmlGUIMenuToolbarWindow.qml</file>
<file>qtquick_controls/qml/QmlGUIMenuToolbarListView.qml</file>
<file>qtquick_controls/qml/QmlGUIMenuToolbarControl.qml</file>
<file>qtquick_controls/qml/QmlGUIExchangesWindow.qml</file>
<file>qtquick_controls/qml/QmlGUIExchangesListView.qml</file>
<file>qtquick_controls/qml/QmlGUIExchangesControl.qml</file>
<file>twitter/FlipBar.qml</file>
<file>twitter/TweetDelegate.qml</file>
<file>twitter/tweetsearch.js</file>
<file>twitter/TweetsModel.qml</file>
<file>twitter/CasinocoinTwitterFeed.qml</file>
<file>twitter/resources/anonymous.png</file>
</qresource>
</RCC> </RCC>

View File

@@ -13,19 +13,22 @@
BitcoinAmountField::BitcoinAmountField(QWidget *parent): BitcoinAmountField::BitcoinAmountField(QWidget *parent):
QWidget(parent), amount(0), currentUnit(-1) QWidget(parent), amount(0), currentUnit(-1)
{ {
unit = new QValueComboBox(this);
unit->setModel(new BitcoinUnits(this));
unit->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed );
amount = new QDoubleSpinBox(this); amount = new QDoubleSpinBox(this);
amount->setLocale(QLocale::c()); amount->setLocale(QLocale::c());
amount->setDecimals(8); amount->setDecimals(8);
amount->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
amount->installEventFilter(this); amount->installEventFilter(this);
amount->setMaximumWidth(170);
amount->setSingleStep(0.001); amount->setSingleStep(0.001);
QHBoxLayout *layout = new QHBoxLayout(this); QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(amount); layout->addWidget(amount);
unit = new QValueComboBox(this);
unit->setModel(new BitcoinUnits(this));
layout->addWidget(unit); layout->addWidget(unit);
layout->addStretch(1); // layout->addStretch(1);
layout->setContentsMargins(0,0,0,0); layout->setContentsMargins(0,0,0,0);
setLayout(layout); setLayout(layout);

View File

@@ -25,6 +25,10 @@
#include "ui_interface.h" #include "ui_interface.h"
#include "wallet.h" #include "wallet.h"
#include "init.h" #include "init.h"
#include "cscfusionstyle.h"
#include "gui20_skin.h"
#include "qtquick_controls/cpp/guimenutoolbarwidget.h"
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
#include "macdockiconhandler.h" #include "macdockiconhandler.h"
@@ -52,6 +56,7 @@
#include <QSettings> #include <QSettings>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QListWidget> #include <QListWidget>
#include <QToolTip>
#include <iostream> #include <iostream>
@@ -60,6 +65,7 @@ const QString BitcoinGUI::DEFAULT_WALLET = "~Default";
BitcoinGUI::BitcoinGUI(QWidget *parent) : BitcoinGUI::BitcoinGUI(QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
clientModel(0), clientModel(0),
toolbarGUI20(0),
encryptWalletAction(0), encryptWalletAction(0),
changePassphraseAction(0), changePassphraseAction(0),
aboutQtAction(0), aboutQtAction(0),
@@ -68,6 +74,8 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) :
rpcConsole(0), rpcConsole(0),
prevBlocks(0) prevBlocks(0)
{ {
QApplication::setStyle(new CSCFusionStyle);
restoreWindowGeometry(); restoreWindowGeometry();
setWindowTitle(tr("CasinoCoin") + " - " + tr("Wallet")); setWindowTitle(tr("CasinoCoin") + " - " + tr("Wallet"));
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
@@ -77,9 +85,20 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) :
setUnifiedTitleAndToolBarOnMac(true); setUnifiedTitleAndToolBarOnMac(true);
QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); QApplication::setAttribute(Qt::AA_DontShowIconsInMenus);
#endif #endif
// Create wallet frame and make it the central widget // Create wallet frame with main menu
walletFrame = new WalletFrame(this); walletFrame = new WalletFrame(this);
setCentralWidget(walletFrame); 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( toolbarGUI20->dockQmlToWidget() );
pBoxLayout->addWidget( walletFrame );
pCentralWidget->setLayout( pBoxLayout );
// and make it the central widget
setCentralWidget(pCentralWidget);
// Accept D&D of URIs // Accept D&D of URIs
setAcceptDrops(true); setAcceptDrops(true);
@@ -92,7 +111,7 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) :
createMenuBar(); createMenuBar();
// Create the toolbars // Create the toolbars
createToolBars(); // createToolBars();
// Create system tray icon and notification // Create system tray icon and notification
createTrayIcon(); createTrayIcon();
@@ -149,6 +168,7 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) :
// Initially wallet actions should be disabled // Initially wallet actions should be disabled
setWalletActionsEnabled(false); setWalletActionsEnabled(false);
} }
BitcoinGUI::~BitcoinGUI() BitcoinGUI::~BitcoinGUI()
@@ -201,6 +221,20 @@ void BitcoinGUI::createActions()
addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5)); addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5));
tabGroup->addAction(addressBookAction); tabGroup->addAction(addressBookAction);
pryptoRedeemAction = new QAction(QIcon(":/icons/receive"), tr("&Prypto Redeem"), this);
pryptoRedeemAction->setStatusTip(tr("Redeem the value of a Prypto card to your wallet"));
pryptoRedeemAction->setToolTip(pryptoRedeemAction->statusTip());
pryptoRedeemAction->setCheckable(true);
pryptoRedeemAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_6));
tabGroup->addAction(pryptoRedeemAction);
infoPageAction = new QAction(QIcon(":/icons/bitcoin"), tr("&Information"), this);
infoPageAction->setStatusTip(tr("Show all Casinocoin related information"));
infoPageAction->setToolTip(infoPageAction->statusTip());
infoPageAction->setCheckable(true);
infoPageAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_7));
tabGroup->addAction(infoPageAction);
connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage()));
connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
@@ -211,6 +245,10 @@ void BitcoinGUI::createActions()
connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage()));
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage())); connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage()));
connect(pryptoRedeemAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
connect(pryptoRedeemAction, SIGNAL(triggered()), this, SLOT(gotoPryptoPage()));
connect(infoPageAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
connect(infoPageAction, SIGNAL(triggered()), this, SLOT(gotoInfoPage()));
quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this); quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this);
quitAction->setStatusTip(tr("Quit application")); quitAction->setStatusTip(tr("Quit application"));
@@ -286,17 +324,6 @@ void BitcoinGUI::createMenuBar()
help->addAction(aboutQtAction); 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) void BitcoinGUI::setClientModel(ClientModel *clientModel)
{ {
this->clientModel = clientModel; this->clientModel = clientModel;
@@ -318,7 +345,6 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
trayIcon->setToolTip(trayIcon->toolTip() + QString(" ") + tr("[testnet]")); trayIcon->setToolTip(trayIcon->toolTip() + QString(" ") + tr("[testnet]"));
trayIcon->setIcon(QIcon(":/icons/toolbar_testnet")); trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
} }
toggleHideAction->setIcon(QIcon(":/icons/toolbar_testnet")); toggleHideAction->setIcon(QIcon(":/icons/toolbar_testnet"));
aboutAction->setIcon(QIcon(":/icons/toolbar_testnet")); aboutAction->setIcon(QIcon(":/icons/toolbar_testnet"));
} }
@@ -371,6 +397,8 @@ void BitcoinGUI::setWalletActionsEnabled(bool enabled)
signMessageAction->setEnabled(enabled); signMessageAction->setEnabled(enabled);
verifyMessageAction->setEnabled(enabled); verifyMessageAction->setEnabled(enabled);
addressBookAction->setEnabled(enabled); addressBookAction->setEnabled(enabled);
pryptoRedeemAction->setEnabled(enabled);
infoPageAction->setEnabled(enabled);
} }
void BitcoinGUI::createTrayIcon() void BitcoinGUI::createTrayIcon()
@@ -445,7 +473,7 @@ void BitcoinGUI::restoreWindowGeometry()
{ {
QSettings settings; QSettings settings;
QPoint pos = settings.value("nWindowPos").toPoint(); QPoint pos = settings.value("nWindowPos").toPoint();
QSize size = settings.value("nWindowSize", QSize(850, 550)).toSize(); QSize size = settings.value("nWindowSize", QSize(900, 650)).toSize();
if (!pos.x() && !pos.y()) if (!pos.x() && !pos.y())
{ {
QRect screen = QApplication::desktop()->screenGeometry(); QRect screen = QApplication::desktop()->screenGeometry();
@@ -467,34 +495,61 @@ void BitcoinGUI::optionsClicked()
void BitcoinGUI::aboutClicked() void BitcoinGUI::aboutClicked()
{ {
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::INFO );
AboutDialog dlg; AboutDialog dlg;
dlg.setModel(clientModel); dlg.setModel(clientModel);
dlg.exec(); dlg.exec();
} }
// TODO
//void BitcoinGUI::redeemPryptoClicked()
//{
// if ( menuBar_new ) menuBar_new->SetCurrentItemType( GUIMenuToolbarControl::INFO );
// RedeemPryptoDialog dlg;
// dlg.setModel(clientModel);
// dlg.exec();
//}
void BitcoinGUI::gotoOverviewPage() void BitcoinGUI::gotoOverviewPage()
{ {
if (walletFrame) walletFrame->gotoOverviewPage(); if (walletFrame) walletFrame->gotoOverviewPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::OVERVIEW );
} }
void BitcoinGUI::gotoHistoryPage() void BitcoinGUI::gotoHistoryPage()
{ {
if (walletFrame) walletFrame->gotoHistoryPage(); if (walletFrame) walletFrame->gotoHistoryPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::TRANSACTIONS );
} }
void BitcoinGUI::gotoAddressBookPage() void BitcoinGUI::gotoAddressBookPage()
{ {
if (walletFrame) walletFrame->gotoAddressBookPage(); if (walletFrame) walletFrame->gotoAddressBookPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::CONTACTS );
}
void BitcoinGUI::gotoPryptoPage()
{
if (walletFrame) walletFrame->gotoPryptoPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::REDEEM_PRYPTO );
}
void BitcoinGUI::gotoInfoPage()
{
if (walletFrame) walletFrame->gotoInfoPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::INFO );
} }
void BitcoinGUI::gotoReceiveCoinsPage() void BitcoinGUI::gotoReceiveCoinsPage()
{ {
if (walletFrame) walletFrame->gotoReceiveCoinsPage(); if (walletFrame) walletFrame->gotoReceiveCoinsPage();
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::RECEIVE );
} }
void BitcoinGUI::gotoSendCoinsPage(QString addr) void BitcoinGUI::gotoSendCoinsPage(QString addr)
{ {
if (walletFrame) walletFrame->gotoSendCoinsPage(addr); if (walletFrame) walletFrame->gotoSendCoinsPage(addr);
if ( toolbarGUI20 ) toolbarGUI20->SetCurrentItemType( GUIMenuToolbarControl::SEND );
} }
void BitcoinGUI::gotoSignMessageTab(QString addr) void BitcoinGUI::gotoSignMessageTab(QString addr)
@@ -837,3 +892,45 @@ void BitcoinGUI::detectShutdown()
if (ShutdownRequested()) if (ShutdownRequested())
QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection);
} }
void BitcoinGUI::slotMenuToolbarItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes a_eType )
{
switch( a_eType )
{
case GUIMenuToolbarControl::OVERVIEW:
{
emit overviewAction->triggered();
break;
}
case GUIMenuToolbarControl::SEND:
{
emit sendCoinsAction->triggered();
break;
}
case GUIMenuToolbarControl::RECEIVE:
{
emit receiveCoinsAction->triggered();
break;
}
case GUIMenuToolbarControl::TRANSACTIONS:
{
emit historyAction->triggered();
break;
}
case GUIMenuToolbarControl::CONTACTS:
{
emit addressBookAction->triggered();
break;
}
case GUIMenuToolbarControl::REDEEM_PRYPTO:
{
emit pryptoRedeemAction->triggered();
break;
}
case GUIMenuToolbarControl::INFO:
{
emit infoPageAction->triggered();
break;
}
}
}

View File

@@ -5,6 +5,8 @@
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include <QMap> #include <QMap>
#include "qtquick_controls/cpp/guimenutoolbarcontrol.h"
class TransactionTableModel; class TransactionTableModel;
class WalletFrame; class WalletFrame;
class WalletView; class WalletView;
@@ -19,6 +21,8 @@ class SignVerifyMessageDialog;
class Notificator; class Notificator;
class RPCConsole; class RPCConsole;
class GUIMenuToolbarWidget;
class CWallet; class CWallet;
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -65,6 +69,8 @@ public:
QAction * getOverviewAction() { return overviewAction; } QAction * getOverviewAction() { return overviewAction; }
QAction * getHistoryAction() { return historyAction; } QAction * getHistoryAction() { return historyAction; }
QAction * getAddressBookAction() { return addressBookAction; } QAction * getAddressBookAction() { return addressBookAction; }
QAction * getPryptoRedeemAction() { return pryptoRedeemAction; }
QAction * getInfoPageAction() { return infoPageAction; }
QAction * getReceiveCoinsAction() { return receiveCoinsAction; } QAction * getReceiveCoinsAction() { return receiveCoinsAction; }
QAction * getSendCoinsAction() { return sendCoinsAction; } QAction * getSendCoinsAction() { return sendCoinsAction; }
@@ -78,6 +84,7 @@ protected:
private: private:
ClientModel *clientModel; ClientModel *clientModel;
WalletFrame *walletFrame; WalletFrame *walletFrame;
GUIMenuToolbarWidget *toolbarGUI20;
QLabel *labelEncryptionIcon; QLabel *labelEncryptionIcon;
QLabel *labelConnectionsIcon; QLabel *labelConnectionsIcon;
@@ -102,6 +109,8 @@ private:
QAction *changePassphraseAction; QAction *changePassphraseAction;
QAction *aboutQtAction; QAction *aboutQtAction;
QAction *openRPCConsoleAction; QAction *openRPCConsoleAction;
QAction *pryptoRedeemAction;
QAction *infoPageAction;
QSystemTrayIcon *trayIcon; QSystemTrayIcon *trayIcon;
Notificator *notificator; Notificator *notificator;
@@ -116,8 +125,6 @@ private:
void createActions(); void createActions();
/** Create the menu bar and sub-menus. */ /** Create the menu bar and sub-menus. */
void createMenuBar(); void createMenuBar();
/** Create the toolbars */
void createToolBars();
/** Create system tray icon and notification */ /** Create system tray icon and notification */
void createTrayIcon(); void createTrayIcon();
/** Create system tray menu (or setup the dock menu) */ /** Create system tray menu (or setup the dock menu) */
@@ -169,10 +176,14 @@ private slots:
void gotoHistoryPage(); void gotoHistoryPage();
/** Switch to address book page */ /** Switch to address book page */
void gotoAddressBookPage(); void gotoAddressBookPage();
/** Switch to redeem prypto page */
void gotoPryptoPage();
/** Switch to receive coins page */ /** Switch to receive coins page */
void gotoReceiveCoinsPage(); void gotoReceiveCoinsPage();
/** Switch to send coins page */ /** Switch to send coins page */
void gotoSendCoinsPage(QString addr = ""); void gotoSendCoinsPage(QString addr = "");
/** Switch to info page */
void gotoInfoPage();
/** Show Sign/Verify Message dialog and switch to sign message tab */ /** Show Sign/Verify Message dialog and switch to sign message tab */
void gotoSignMessageTab(QString addr = ""); void gotoSignMessageTab(QString addr = "");
@@ -195,6 +206,9 @@ private slots:
/** called by a timer to check if fRequestShutdown has been set **/ /** called by a timer to check if fRequestShutdown has been set **/
void detectShutdown(); void detectShutdown();
/** called from new Qml menu toolbar on user click **/
void slotMenuToolbarItemClicked( GUIMenuToolbarControl::EMenuToolbarItemTypes a_eType );
}; };
#endif // BITCOINGUI_H #endif // BITCOINGUI_H

View File

@@ -1,4 +1,5 @@
#include <QtGlobal> #include <QtGlobal>
#include "version.h"
// Automatically generated by extract_strings.py // Automatically generated by extract_strings.py
#ifdef __GNUC__ #ifdef __GNUC__
#define UNUSED __attribute__((unused)) #define UNUSED __attribute__((unused))
@@ -6,18 +7,19 @@
#define UNUSED #define UNUSED
#endif #endif
static const char UNUSED *bitcoin_strings[] = { static const char UNUSED *bitcoin_strings[] = {
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", (std::string("") +
"%s, you must set a rpcpassword in the configuration file:\n" "%s, you must set a rpcpassword in the configuration file:\n" +
"%s\n" "%s\n" +
"It is recommended you use the following random password:\n" "It is recommended you use the following random password:\n" +
"rpcuser=casinocoinrpc\n" "rpcuser=" + COIN_NAME +"rpc\n" +
"rpcpassword=%s\n" "rpcpassword=%s\n" +
"(you do not need to remember this password)\n" "(you do not need to remember this password)\n" +
"The username and password MUST NOT be the same.\n" "The username and password MUST NOT be the same.\n" +
"If the file does not exist, create it with owner-readable-only file " "If the file does not exist, create it with owner-readable-only file " +
"permissions.\n" "permissions.\n" +
"It is also recommended to set alertnotify so you are notified of problems;\n" "It is also recommended to set alertnotify so you are notified of problems;\n" +
"for example: alertnotify=echo %%s | mail -s \"CasinoCoin Alert\" admin@foo.com\n"), "for example: alertnotify=echo %%s | mail -s \"" + COIN_NAME_DISPLAY +
" Alert\" admin@foo.com\n").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:" "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:"
"@STRENGTH)"), "@STRENGTH)"),
@@ -29,9 +31,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Bind to given address and always listen on it. Use [host]:port notation for " "Bind to given address and always listen on it. Use [host]:port notation for "
"IPv6"), "IPv6"),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", (std::string("") +
"Cannot obtain a lock on data directory %s. CasinoCoin is probably already " "Cannot obtain a lock on data directory %s. "+ COIN_NAME_DISPLAY + " is probably already "
"running."), "running.").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Error: The transaction was rejected! This might happen if some of the coins " "Error: The transaction was rejected! This might happen if some of the coins "
"in your wallet were already spent, such as if you used a copy of wallet.dat " "in your wallet were already spent, such as if you used a copy of wallet.dat "
@@ -62,17 +64,17 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"This is a pre-release test build - use at your own risk - do not use for " "This is a pre-release test build - use at your own risk - do not use for "
"mining or merchant applications"), "mining or merchant applications"),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", (std::string("") +
"Unable to bind to %s on this computer. CasinoCoin is probably already running."), "Unable to bind to %s on this computer. "+ COIN_NAME_DISPLAY + " is probably already running.").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Warning: -paytxfee is set very high! This is the transaction fee you will " "Warning: -paytxfee is set very high! This is the transaction fee you will "
"pay if you send a transaction."), "pay if you send a transaction."),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Warning: Displayed transactions may not be correct! You may need to upgrade, " "Warning: Displayed transactions may not be correct! You may need to upgrade, "
"or other nodes may need to upgrade."), "or other nodes may need to upgrade."),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", (std::string("") +
"Warning: Please check that your computer's date and time are correct! If " "Warning: Please check that your computer's date and time are correct! If "
"your clock is wrong CasinoCoin will not work properly."), "your clock is wrong "+ COIN_NAME_DISPLAY + " will not work properly.").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "" QT_TRANSLATE_NOOP("bitcoin-core", ""
"Warning: error reading wallet.dat! All keys read correctly, but transaction " "Warning: error reading wallet.dat! All keys read correctly, but transaction "
"data or address book entries might be missing or incorrect."), "data or address book entries might be missing or incorrect."),
@@ -91,7 +93,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Add a node to connect to and attempt to keep
QT_TRANSLATE_NOOP("bitcoin-core", "Allow DNS lookups for -addnode, -seednode and -connect"), QT_TRANSLATE_NOOP("bitcoin-core", "Allow DNS lookups for -addnode, -seednode and -connect"),
QT_TRANSLATE_NOOP("bitcoin-core", "Allow JSON-RPC connections from specified IP address"), QT_TRANSLATE_NOOP("bitcoin-core", "Allow JSON-RPC connections from specified IP address"),
QT_TRANSLATE_NOOP("bitcoin-core", "Attempt to recover private keys from a corrupt wallet.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Attempt to recover private keys from a corrupt wallet.dat"),
QT_TRANSLATE_NOOP("bitcoin-core", "CasinoCoin version"), QT_TRANSLATE_NOOP("bitcoin-core", (COIN_NAME_DISPLAY + " version").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Block creation options:"), QT_TRANSLATE_NOOP("bitcoin-core", "Block creation options:"),
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot downgrade wallet"), QT_TRANSLATE_NOOP("bitcoin-core", "Cannot downgrade wallet"),
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -bind address: '%s'"), QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -bind address: '%s'"),
@@ -109,7 +111,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Error initializing wallet database environmen
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading block database"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading block database"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet corrupted"), QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet corrupted"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet requires newer version of CasinoCoin"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("Error loading wallet.dat: Wallet requires newer version of ")+ COIN_NAME_DISPLAY + "").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Error opening block database"), QT_TRANSLATE_NOOP("bitcoin-core", "Error opening block database"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error"), QT_TRANSLATE_NOOP("bitcoin-core", "Error"),
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Disk space is low!"), QT_TRANSLATE_NOOP("bitcoin-core", "Error: Disk space is low!"),
@@ -162,9 +164,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Rebuild block chain index from current blk000
QT_TRANSLATE_NOOP("bitcoin-core", "Rescan the block chain for missing wallet transactions"), QT_TRANSLATE_NOOP("bitcoin-core", "Rescan the block chain for missing wallet transactions"),
QT_TRANSLATE_NOOP("bitcoin-core", "Rescanning..."), QT_TRANSLATE_NOOP("bitcoin-core", "Rescanning..."),
QT_TRANSLATE_NOOP("bitcoin-core", "Run in the background as a daemon and accept commands"), QT_TRANSLATE_NOOP("bitcoin-core", "Run in the background as a daemon and accept commands"),
QT_TRANSLATE_NOOP("bitcoin-core", "SSL options: (see the CasinoCoin Wiki for SSL setup instructions)"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("SSL options: (see the ") + COIN_NAME_DISPLAY + " Wiki for SSL setup instructions)").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Select the version of socks proxy to use (4-5, default: 5)"), QT_TRANSLATE_NOOP("bitcoin-core", "Select the version of socks proxy to use (4-5, default: 5)"),
QT_TRANSLATE_NOOP("bitcoin-core", "Send command to -server or casinocoind"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("Send command to -server or ") + COIN_NAME + "d").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Send commands to node running on <ip> (default: 127.0.0.1)"), QT_TRANSLATE_NOOP("bitcoin-core", "Send commands to node running on <ip> (default: 127.0.0.1)"),
QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to console instead of debug.log file"), QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to console instead of debug.log file"),
QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to debugger"), QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to debugger"),
@@ -177,10 +179,10 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Set minimum block size in bytes (default: 0)"
QT_TRANSLATE_NOOP("bitcoin-core", "Set the number of threads to service RPC calls (default: 4)"), QT_TRANSLATE_NOOP("bitcoin-core", "Set the number of threads to service RPC calls (default: 4)"),
QT_TRANSLATE_NOOP("bitcoin-core", "Shrink debug.log file on client startup (default: 1 when no -debug)"), QT_TRANSLATE_NOOP("bitcoin-core", "Shrink debug.log file on client startup (default: 1 when no -debug)"),
QT_TRANSLATE_NOOP("bitcoin-core", "Signing transaction failed"), QT_TRANSLATE_NOOP("bitcoin-core", "Signing transaction failed"),
QT_TRANSLATE_NOOP("bitcoin-core", "Specify configuration file (default: casinocoin.conf)"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("Specify configuration file (default: ") + COIN_NAME + ".conf)").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Specify connection timeout in milliseconds (default: 5000)"), QT_TRANSLATE_NOOP("bitcoin-core", "Specify connection timeout in milliseconds (default: 5000)"),
QT_TRANSLATE_NOOP("bitcoin-core", "Specify data directory"), QT_TRANSLATE_NOOP("bitcoin-core", "Specify data directory"),
QT_TRANSLATE_NOOP("bitcoin-core", "Specify pid file (default: casinocoind.pid)"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("Specify pid file (default: ") + COIN_NAME + "d.pid)").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Specify your own public address"), QT_TRANSLATE_NOOP("bitcoin-core", "Specify your own public address"),
QT_TRANSLATE_NOOP("bitcoin-core", "System error: "), QT_TRANSLATE_NOOP("bitcoin-core", "System error: "),
QT_TRANSLATE_NOOP("bitcoin-core", "This help message"), QT_TRANSLATE_NOOP("bitcoin-core", "This help message"),
@@ -202,7 +204,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Use the test network"),
QT_TRANSLATE_NOOP("bitcoin-core", "Username for JSON-RPC connections"), QT_TRANSLATE_NOOP("bitcoin-core", "Username for JSON-RPC connections"),
QT_TRANSLATE_NOOP("bitcoin-core", "Verifying blocks..."), QT_TRANSLATE_NOOP("bitcoin-core", "Verifying blocks..."),
QT_TRANSLATE_NOOP("bitcoin-core", "Verifying wallet..."), QT_TRANSLATE_NOOP("bitcoin-core", "Verifying wallet..."),
QT_TRANSLATE_NOOP("bitcoin-core", "Wallet needed to be rewritten: restart CasinoCoin to complete"), QT_TRANSLATE_NOOP("bitcoin-core", (std::string("Wallet needed to be rewritten: restart ")+ COIN_NAME_DISPLAY + " to complete").c_str()),
QT_TRANSLATE_NOOP("bitcoin-core", "Warning"), QT_TRANSLATE_NOOP("bitcoin-core", "Warning"),
QT_TRANSLATE_NOOP("bitcoin-core", "Warning: This version is obsolete, upgrade required!"), QT_TRANSLATE_NOOP("bitcoin-core", "Warning: This version is obsolete, upgrade required!"),
QT_TRANSLATE_NOOP("bitcoin-core", "You need to rebuild the database using -reindex to change -txindex"), QT_TRANSLATE_NOOP("bitcoin-core", "You need to rebuild the database using -reindex to change -txindex"),

429
src/qt/cscfusionstyle.cpp Normal file
View File

@@ -0,0 +1,429 @@
#include <QtWidgets>
#include "cscfusionstyle.h"
#include "gui20_skin.h"
CSCFusionStyle::CSCFusionStyle() :
QProxyStyle(QStyleFactory::create("fusion"))
{
}
void CSCFusionStyle::polish(QPalette &palette)
{
GUI20Skin& skin = GUI20Skin::Instance();
QLinearGradient buttonGradient;
buttonGradient.setColorAt( 0, skin.GetColorButtonTopGradient() );
buttonGradient.setColorAt( 1, skin.GetColorButtonBottomGradient() );
QLinearGradient toolTipGradient;
toolTipGradient.setColorAt( 0, skin.GetColorToolbarMainGradientBegin() );
toolTipGradient.setColorAt( 1, skin.GetColorToolbarMainGradientEnd() );
palette = QPalette();
palette.setBrush( QPalette::Active, QPalette::Text, skin.GetColorTextActive() );
palette.setBrush( QPalette::Active, QPalette::BrightText, skin.GetColorTextActiveAutocomplete() );
palette.setBrush( QPalette::Active, QPalette::Base, skin.GetColorFrameBackground() );
palette.setBrush( QPalette::Active, QPalette::AlternateBase, skin.GetColorListValueAlternative() );
palette.setBrush( QPalette::Active, QPalette::Highlight, skin.GetColorListCurrent() );
palette.setBrush( QPalette::Active, QPalette::HighlightedText, skin.GetColorTextActive() );
palette.setBrush( QPalette::Active, QPalette::Button, skin.GetColorButtonBottomGradient() );
palette.setBrush( QPalette::Active, QPalette::ButtonText, skin.GetColorTextActive() );
palette.setBrush( QPalette::Active, QPalette::Mid, skin.GetColorButtonMid() );
palette.setBrush( QPalette::Active, QPalette::Dark, skin.GetColorButtonDark() );
palette.setBrush( QPalette::Active, QPalette::Light, skin.GetColorButtonLight() );
palette.setBrush( QPalette::Active, QPalette::Window, skin.GetColorWindowBackground() );
palette.setBrush( QPalette::Inactive, QPalette::Text, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Inactive, QPalette::BrightText, skin.GetColorTextDisabledAutocomplete() );
palette.setBrush( QPalette::Inactive, QPalette::Base, skin.GetColorFrameBackground() );
palette.setBrush( QPalette::Inactive, QPalette::AlternateBase, skin.GetColorListValueAlternative() );
palette.setBrush( QPalette::Inactive, QPalette::Highlight, skin.GetColorListCurrent() );
palette.setBrush( QPalette::Inactive, QPalette::HighlightedText, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Inactive, QPalette::Button, skin.GetColorButtonBottomGradient() );
palette.setBrush( QPalette::Inactive, QPalette::ButtonText, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Inactive, QPalette::Mid, skin.GetColorButtonMid() );
palette.setBrush( QPalette::Inactive, QPalette::Dark, skin.GetColorButtonDark() );
palette.setBrush( QPalette::Inactive, QPalette::Light, skin.GetColorButtonLight() );
palette.setBrush( QPalette::Inactive, QPalette::Window, skin.GetColorWindowBackground() );
palette.setBrush( QPalette::Inactive, QPalette::ToolTipBase, toolTipGradient );
palette.setBrush( QPalette::Inactive, QPalette::ToolTipText, skin.GetColorToolbarMainTextCurrent() );
palette.setBrush( QPalette::Disabled, QPalette::Text, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Disabled, QPalette::BrightText, skin.GetColorTextDisabledAutocomplete() );
palette.setBrush( QPalette::Disabled, QPalette::Base, skin.GetColorFrameBackground() );
palette.setBrush( QPalette::Disabled, QPalette::AlternateBase, skin.GetColorListValueAlternative() );
palette.setBrush( QPalette::Disabled, QPalette::Highlight, skin.GetColorListCurrent() );
palette.setBrush( QPalette::Disabled, QPalette::HighlightedText, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Disabled, QPalette::Button, skin.GetColorButtonBottomGradient() );
palette.setBrush( QPalette::Disabled, QPalette::ButtonText, skin.GetColorTextDisabled() );
palette.setBrush( QPalette::Disabled, QPalette::Mid, skin.GetColorButtonMid() );
palette.setBrush( QPalette::Disabled, QPalette::Dark, skin.GetColorButtonDark() );
palette.setBrush( QPalette::Disabled, QPalette::Light, skin.GetColorButtonLight() );
palette.setBrush( QPalette::Disabled, QPalette::Window, skin.GetColorWindowBackground() );
}
void CSCFusionStyle::polish(QWidget *widget)
{
if ( qobject_cast<QPushButton *>(widget)
|| qobject_cast<QComboBox *>(widget)
)
{
widget->setAttribute(Qt::WA_Hover, true);
}
}
void CSCFusionStyle::unpolish(QWidget *widget)
{
if ( qobject_cast<QPushButton *>(widget)
|| qobject_cast<QComboBox *>(widget)
)
{
widget->setAttribute(Qt::WA_Hover, false);
}
}
int CSCFusionStyle::pixelMetric(PixelMetric metric,
const QStyleOption *option,
const QWidget *widget) const
{
switch (metric)
{
case PM_DefaultFrameWidth:
case PM_ComboBoxFrameWidth:
case PM_SpinBoxFrameWidth:
case PM_CheckBoxLabelSpacing:
case PM_HeaderMargin:
{
return 8;
}
case PM_IndicatorHeight:
case PM_IndicatorWidth:
case PM_ExclusiveIndicatorWidth:
case PM_ExclusiveIndicatorHeight:
{
return 18;
}
case PM_ScrollBarExtent:
{
return QProxyStyle::pixelMetric(metric, option, widget) + 4;
}
case PM_ToolTipLabelFrameWidth:
{
return 6;
}
default:
{
return QProxyStyle::pixelMetric(metric, option, widget);
}
}
}
int CSCFusionStyle::styleHint(StyleHint hint, const QStyleOption *option,
const QWidget *widget,
QStyleHintReturn *returnData) const
{
switch (hint)
{
case SH_DitherDisabledText:
{
return int(false);
}
case SH_EtchDisabledText:
{
return int(true);
}
default:
{
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
}
}
void CSCFusionStyle::drawPrimitive(PrimitiveElement element,
const QStyleOption *option,
QPainter *painter,
const QWidget *widget) const
{
GUI20Skin& skin = GUI20Skin::Instance();
switch (element)
{
case PE_FrameDefaultButton:
{
return;
}
case PE_FrameFocusRect:
{
return;
}
case PE_PanelItemViewRow:
{
QPainterPath roundRect = roundRectPath(option->rect, 0);
QBrush brush = option->palette.base();
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
painter->fillPath(roundRect, brush);
painter->restore();
break;
}
// case PE_IndicatorArrowDown:
// case PE_IndicatorArrowUp:
// case PE_IndicatorArrowLeft:
// case PE_IndicatorArrowRight:
// {
// int x, y, width, height;
// option->rect.getRect(&x, &y, &width, &height);
// painter->save();
// painter->setRenderHint(QPainter::Antialiasing, true);
// QImage imgArrow;
// QString strPath = ":/icons/advertsArrow";
// if ( element == PE_IndicatorArrowDown || PE_IndicatorSpinDown || PE_IndicatorSpinMinus )
// {
// strPath.append( "Down" );
// }
// else if ( element == PE_IndicatorArrowLeft )
// {
// strPath.append( "Left" );
// }
// else if ( element == PE_IndicatorArrowUp || PE_IndicatorSpinUp || PE_IndicatorSpinPlus )
// {
// strPath.append( "Up" );
// }
// else if ( element == PE_IndicatorArrowRight )
// {
// strPath.append( "Right" );
// }
// if ( option->state & QStyle::State_MouseOver )
// {
// strPath.append( "Hover" );
// }
// qDebug() << "gonna draw: " << strPath;
// imgArrow.load( strPath );
// int iTopLeftX = x + ( ( ( width - imgArrow.width() ) / 2 ) );
// int iTopLeftY = y + ( ( ( height - imgArrow.height() ) / 2 ) );
// painter->drawImage( QPoint( iTopLeftX, iTopLeftY), imgArrow );
// painter->restore();
// break;
// }
case PE_FrameGroupBox:
case PE_FrameWindow:
case PE_Frame:
{
int x, y, width, height;
option->rect.getRect(&x, &y, &width, &height);
QPainterPath roundRect = roundRectPath(option->rect, 5);
QBrush brush = option->palette.base();
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
painter->fillPath(roundRect, brush);
painter->restore();
break;
}
case PE_IndicatorRadioButton:
{
int x, y, width, height;
option->rect.getRect(&x, &y, &width, &height);
QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), ( width -1 ) / 2);
QPen pen( skin.GetColorToolbarMainGradientBegin(), 2 );
painter->save();
painter->setPen( pen );
painter->setRenderHint(QPainter::Antialiasing, true);
painter->drawPath( roundRect );
if ( option->state & QStyle::State_Off )
{
}
else if ( option->state & QStyle::State_On )
{
QImage checkboxTick( ":/icons/radiobuttonTick" );
checkboxTick = checkboxTick.scaled( 10, 10 );
int iTopLeftX = x + ( ( ( width - checkboxTick.width() ) / 2 ) );
int iTopLeftY = y + ( ( ( height - checkboxTick.height() ) / 2 ) );
painter->drawImage( QPoint( iTopLeftX, iTopLeftY ), checkboxTick );
}
painter->restore();
break;
}
case PE_IndicatorCheckBox:
{
int x, y, width, height;
option->rect.getRect(&x, &y, &width, &height);
QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), 2 );
QPen pen( skin.GetColorToolbarMainGradientBegin(), 2 );
painter->save();
painter->setPen( pen );
painter->setRenderHint(QPainter::Antialiasing, true);
painter->drawPath( roundRect );
if ( option->state & QStyle::State_Off )
{
}
else if ( option->state & QStyle::State_On )
{
QImage checkboxTick( ":/icons/checkboxTick" );
int iTopLeftX = x + ( ( ( width - checkboxTick.width() ) / 2 ) );
int iTopLeftY = y + ( ( ( height - checkboxTick.height() ) / 2 ) );
painter->drawImage( QPoint( iTopLeftX, iTopLeftY ), checkboxTick );
}
painter->restore();
break;
}
case PE_PanelButtonCommand:
{
GUI20Skin& skin = GUI20Skin::Instance();
int delta = (option->state & State_MouseOver) ? 64 : 0;
QColor semiTransparentWhite = skin.GetColorButtonLight();
semiTransparentWhite.setAlpha(127 + delta);
QColor semiTransparentBlack = skin.GetColorButtonDark();
semiTransparentBlack.setAlpha(127 - delta);
int x, y, width, height;
option->rect.getRect(&x, &y, &width, &height);
int radius = 5;
QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), radius );
QBrush brush;
if (option->state & (State_Sunken | State_On))
{
brush = option->palette.mid();
}
else
{
brush = option->palette.button();
}
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
painter->fillPath(roundRect, brush);
int penWidth;
if (radius < 10)
{
penWidth = 3;
}
else if (radius < 20)
{
penWidth = 5;
}
else
{
penWidth = 7;
}
QPen topPen(semiTransparentWhite, penWidth);
QPen bottomPen(semiTransparentBlack, penWidth);
if (option->state & (State_Sunken | State_On))
{
qSwap(topPen, bottomPen);
}
int x1 = x;
int x2 = x + radius;
int x3 = x + width - radius;
int x4 = x + width;
if (option->direction == Qt::RightToLeft)
{
qSwap(x1, x4);
qSwap(x2, x3);
}
QPolygon topHalf;
topHalf << QPoint(x1, y)
<< QPoint(x4, y)
<< QPoint(x3, y + radius)
<< QPoint(x2, y + height - radius)
<< QPoint(x1, y + height);
painter->setClipPath(roundRect);
painter->setClipRegion(topHalf, Qt::IntersectClip);
painter->setPen(topPen);
painter->drawPath(roundRect);
QPolygon bottomHalf = topHalf;
bottomHalf[0] = QPoint(x4, y + height);
painter->setClipPath(roundRect);
painter->setClipRegion(bottomHalf, Qt::IntersectClip);
painter->setPen(bottomPen);
painter->drawPath(roundRect);
painter->setPen(option->palette.foreground().color());
painter->setClipping(false);
painter->drawPath(roundRect);
painter->restore();
break;
}
default:
{
QProxyStyle::drawPrimitive(element, option, painter, widget);
}
}
}
void CSCFusionStyle::drawControl(ControlElement element,
const QStyleOption *option,
QPainter *painter,
const QWidget *widget) const
{
switch (element)
{
case CE_PushButtonLabel:
{
QStyleOptionButton myButtonOption;
const QStyleOptionButton *buttonOption =
qstyleoption_cast<const QStyleOptionButton *>(option);
if (buttonOption)
{
myButtonOption = *buttonOption;
if (myButtonOption.palette.currentColorGroup() != QPalette::Disabled)
{
if (myButtonOption.state & (State_Sunken | State_On))
{
myButtonOption.palette.setBrush(QPalette::ButtonText,
myButtonOption.palette.brightText());
}
}
}
QProxyStyle::drawControl(element, &myButtonOption, painter, widget);
break;
}
default:
{
QProxyStyle::drawControl(element, option, painter, widget);
break;
}
}
}
QPainterPath CSCFusionStyle::roundRectPath(const QRect &rect, int radius)
{
int diam = 2 * radius;
int x1, y1, x2, y2;
rect.getCoords(&x1, &y1, &x2, &y2);
QPainterPath path;
path.moveTo(x2, y1 + radius);
path.arcTo(QRect(x2 - diam, y1, diam, diam), 0.0, +90.0);
path.lineTo(x1 + radius, y1);
path.arcTo(QRect(x1, y1, diam, diam), 90.0, +90.0);
path.lineTo(x1, y2 - radius);
path.arcTo(QRect(x1, y2 - diam, diam, diam), 180.0, +90.0);
path.lineTo(x1 + radius, y2);
path.arcTo(QRect(x2 - diam, y2 - diam, diam, diam), 270.0, +90.0);
path.closeSubpath();
return path;
}

77
src/qt/cscfusionstyle.h Normal file
View File

@@ -0,0 +1,77 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef CSCFUSIONSTYLE_H
#define CSCFUSIONSTYLE_H
#include <QProxyStyle>
#include <QPalette>
QT_BEGIN_NAMESPACE
class QPainterPath;
QT_END_NAMESPACE
//! [0]
class CSCFusionStyle : public QProxyStyle
{
Q_OBJECT
public:
CSCFusionStyle();
void polish(QPalette &palette) Q_DECL_OVERRIDE;
void polish(QWidget *widget) Q_DECL_OVERRIDE;
void unpolish(QWidget *widget) Q_DECL_OVERRIDE;
int pixelMetric(PixelMetric metric, const QStyleOption *option,
const QWidget *widget) const Q_DECL_OVERRIDE;
int styleHint(StyleHint hint, const QStyleOption *option,
const QWidget *widget, QStyleHintReturn *returnData) const Q_DECL_OVERRIDE;
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const Q_DECL_OVERRIDE;
void drawControl(ControlElement control, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const Q_DECL_OVERRIDE;
private:
static QPainterPath roundRectPath(const QRect &rect, int radius);
};
//! [0]
#endif

140
src/qt/currencies.cpp Normal file
View File

@@ -0,0 +1,140 @@
#include "currencies.h"
#include <QStringList>
#include <QLocale>
Currencies::Currencies(QObject *parent):
QAbstractListModel(parent),
currencylist(availableCurrencies())
{
}
QList<Currencies::FiatCurrencyID> Currencies::availableCurrencies()
{
QList<Currencies::FiatCurrencyID> currencylist;
currencylist.append(USD);
currencylist.append(EUR);
currencylist.append(CNY);
currencylist.append(JPY);
currencylist.append(RUB);
currencylist.append(CAD);
currencylist.append(GBP);
currencylist.append(AUD);
currencylist.append(NZD);
return currencylist;
}
bool Currencies::valid(int currency)
{
switch(currency)
{
case USD:
case EUR:
case CNY:
case JPY:
case RUB:
case CAD:
case GBP:
case AUD:
case NZD:
return true;
default:
return false;
}
}
QString Currencies::name(int currency)
{
switch(currency)
{
case USD: return QString("USD");
case EUR: return QString("EUR");
case CNY: return QString("CNY");
case JPY: return QString("JPY");
case RUB: return QString("RUB");
case CAD: return QString("CAD");
case GBP: return QString("GBP");
case AUD: return QString("AUD");
case NZD: return QString("NZD");
default: return QString("???");
}
}
QString Currencies::description(int currency)
{
switch(currency)
{
case USD: return QString("US Dollar");
case EUR: return QString("European Euro");
case CNY: return QString("Chinese Yuan");
case JPY: return QString("Japanese Yen");
case RUB: return QString("Russian Ruble");
case CAD: return QString("Canadian Dollar");
case GBP: return QString("British Pound");
case AUD: return QString("Australian Dollar");
case NZD: return QString("New Zealand Dollar");
default: return QString("???");
}
}
QString Currencies::symbol(int currency)
{
switch(currency)
{
case USD: return QString("$");
case EUR: return QString("");
case CNY: return QString("¥");
case JPY: return QString("¥");
case RUB: return QString("");
case CAD: return QString("$");
case GBP: return QString("£");
case AUD: return QString("$");
case NZD: return QString("$");
default: return QString("$");
}
}
QString Currencies::format(int currency, double value, bool useSymbol, int decimals, bool isSatoshi)
{
// divide by satoshi
double fiatValue = value;
if(isSatoshi)
{
fiatValue *= 0.00000001;
}
QString formattedValue = "";
if(useSymbol)
{
formattedValue.append(symbol(currency)).append(" ");
}
// apply format
QLocale::setDefault( QLocale(QLocale::English, QLocale::UnitedStates) );
formattedValue.append(QString("%L1").arg(fiatValue, 0, 'f', decimals)).append(" ").append(name(currency));
return formattedValue;
}
int Currencies::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return currencylist.size();
}
QVariant Currencies::data(const QModelIndex &index, int role) const
{
int row = index.row();
if(row >= 0 && row < currencylist.size())
{
FiatCurrencyID currency = currencylist.at(row);
switch(role)
{
case Qt::EditRole:
case Qt::DisplayRole:
return QVariant(name(currency));
case Qt::ToolTipRole:
return QVariant(description(currency));
case CurrencyRole:
return QVariant(static_cast<int>(currency));
}
}
return QVariant();
}

54
src/qt/currencies.h Normal file
View File

@@ -0,0 +1,54 @@
#ifndef CURRENCIES_H
#define CURRENCIES_H
#include <QAbstractListModel>
class Currencies : public QAbstractListModel
{
Q_OBJECT
public:
explicit Currencies(QObject *parent);
enum FiatCurrencyID {
USD,
EUR,
CNY,
JPY,
RUB,
CAD,
GBP,
AUD,
NZD,
};
//! Get list of currencies, for drop-down box
static QList<FiatCurrencyID> availableCurrencies();
//! Is currency ID valid?
static bool valid(int currency);
//! Short name
static QString name(int currency);
//! Longer description
static QString description(int unit);
//! symbol
static QString symbol(int currency);
//! Format value
static QString format(int currency, double value, bool symbol, int decimals, bool isSatoshi);
//! @name AbstractListModel implementation
//! List model for currency drop-down selection box.
///@{
enum RoleIndex {
/** Currency identifier */
CurrencyRole = Qt::UserRole
};
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
///@}
private:
QList<Currencies::FiatCurrencyID> currencylist;
};
typedef Currencies::FiatCurrencyID Currency;
#endif // CURRENCIES_H

View File

@@ -6,53 +6,15 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>760</width> <width>993</width>
<height>380</height> <height>380</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Address Book</string> <string>Address Book</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QGridLayout" name="gridLayout">
<item> <item row="1" column="0">
<widget class="QLabel" name="labelExplanation">
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QTableView" name="tableView">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="toolTip">
<string>Double-click to edit address or label</string>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QPushButton" name="newAddress"> <widget class="QPushButton" name="newAddress">
@@ -153,6 +115,17 @@
<property name="toolTip"> <property name="toolTip">
<string>Export the data in the current tab to a file</string> <string>Export the data in the current tab to a file</string>
</property> </property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(170, 28, 33);
color: rgb(255, 255, 255);
pressed
{
background-color: rgb(166, 27, 31);
}</string>
</property>
<property name="text"> <property name="text">
<string>&amp;Export</string> <string>&amp;Export</string>
</property> </property>
@@ -160,6 +133,12 @@
<iconset resource="../bitcoin.qrc"> <iconset resource="../bitcoin.qrc">
<normaloff>:/icons/export</normaloff>:/icons/export</iconset> <normaloff>:/icons/export</normaloff>:/icons/export</iconset>
</property> </property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@@ -177,6 +156,59 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0">
<widget class="QTableView" name="tableView">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="toolTip">
<string>Double-click to edit address or label</string>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
</widget>
</item>
<item row="2" column="0">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="labelExplanation">
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources> <resources>

468
src/qt/forms/infopage.ui Normal file
View File

@@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>InfoPage</class>
<widget class="QDialog" name="InfoPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>480</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>800</width>
<height>480</height>
</size>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>15</number>
</property>
<property name="topMargin">
<number>15</number>
</property>
<property name="rightMargin">
<number>15</number>
</property>
<property name="bottomMargin">
<number>15</number>
</property>
<property name="horizontalSpacing">
<number>15</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="coinInfoBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>4</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="lblInformationHeader">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text">
<string>Information</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QFormLayout" name="formCoinDetails">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<property name="horizontalSpacing">
<number>15</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lblBlockHeight">
<property name="font">
<font>
<kerning>true</kerning>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Current number of blocks</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="txtBlockHeight">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblLastBlockTime">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Last block time</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="txtLastBlockTime">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lblCoinSupply">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Coin Supply</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="txtCoinSupply">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lblCoinValue">
<property name="text">
<string>Coin Value</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="txtCoinValue">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lblCoinFiatValue">
<property name="text">
<string>Coin Fiat Value</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="txtCoinFiatValue">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lblEstimatedMarketCapital">
<property name="text">
<string>Estimated Marketcapital</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="txtEstimatedMarketCapital">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lblConnections">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Number of connections</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="txtConnections">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="lblDifficulty">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Difficulty</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="txtDifficulty">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="lblHashRate">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Network Hashrate</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="txtHashRate">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QFrame" name="twitterFeedBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>3</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayoutTwitter"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblTwitterHeader">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text">
<string>Twitter</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QFrame" name="exchangeInfoBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<layout class="QVBoxLayout" name="verticalLayoutExchanges"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblExchangesHeader">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text">
<string>Exchanges</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -16,20 +16,23 @@
<property name="modal"> <property name="modal">
<bool>true</bool> <bool>true</bool>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QGridLayout" name="gridLayout_2">
<item> <item row="0" column="0">
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="tabPosition"> <property name="tabPosition">
<enum>QTabWidget::North</enum> <enum>QTabWidget::North</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>3</number>
</property> </property>
<widget class="QWidget" name="tabMain"> <widget class="QWidget" name="tabMain">
<attribute name="title"> <attribute name="title">
<string>&amp;Main</string> <string>&amp;Main</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_Main"> <layout class="QVBoxLayout" name="verticalLayout_Main">
<item>
<widget class="QFrame" name="verticalFrame1">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item> <item>
<widget class="QLabel" name="transactionFeeInfoLabel"> <widget class="QLabel" name="transactionFeeInfoLabel">
<property name="text"> <property name="text">
@@ -43,7 +46,11 @@
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QFrame" name="frameTransactionFee">
<layout class="QHBoxLayout" name="horizontalLayout_1_Main"> <layout class="QHBoxLayout" name="horizontalLayout_1_Main">
<item> <item>
<widget class="QLabel" name="transactionFeeLabel"> <widget class="QLabel" name="transactionFeeLabel">
@@ -61,31 +68,28 @@
<item> <item>
<widget class="BitcoinAmountField" name="transactionFee"/> <widget class="BitcoinAmountField" name="transactionFee"/>
</item> </item>
<item>
<spacer name="horizontalSpacer_1_Main">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget>
</item> </item>
<item>
<widget class="QFrame" name="verticalFrame2">
<layout class="QVBoxLayout" name="verticalLayout_5">
<item> <item>
<widget class="QCheckBox" name="bitcoinAtStartup"> <widget class="QCheckBox" name="bitcoinAtStartup">
<property name="toolTip"> <property name="toolTip">
<string>Automatically start CasinoCoin after logging in to the system.</string> <string>Automatically start CasinoCoin after logging in to the system.</string>
</property> </property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text"> <property name="text">
<string>&amp;Start CasinoCoin on system login</string> <string>&amp;Start CasinoCoin on system login</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer_Main"> <spacer name="verticalSpacer_Main">
<property name="orientation"> <property name="orientation">
@@ -100,6 +104,7 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QFrame" name="frameResetOptions">
<layout class="QHBoxLayout" name="horizontalLayout_2_Main"> <layout class="QHBoxLayout" name="horizontalLayout_2_Main">
<item> <item>
<spacer name="horizontalSpacer_2_Main"> <spacer name="horizontalSpacer_2_Main">
@@ -128,6 +133,7 @@
</widget> </widget>
</item> </item>
</layout> </layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
@@ -137,15 +143,8 @@
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_Network"> <layout class="QVBoxLayout" name="verticalLayout_Network">
<item> <item>
<widget class="QCheckBox" name="mapPortUpnp"> <widget class="QFrame" name="verticalFrame3">
<property name="toolTip"> <layout class="QVBoxLayout" name="verticalLayout_4">
<string>Automatically open the CasinoCoin client port on the router. This only works when your router supports UPnP and it is enabled.</string>
</property>
<property name="text">
<string>Map port using &amp;UPnP</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QCheckBox" name="connectSocks"> <widget class="QCheckBox" name="connectSocks">
<property name="toolTip"> <property name="toolTip">
@@ -157,8 +156,22 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_Network"> <widget class="QCheckBox" name="mapPortUpnp">
<property name="toolTip">
<string>Automatically open the CasinoCoin client port on the router. This only works when your router supports UPnP and it is enabled.</string>
</property>
<property name="text">
<string>Map port using &amp;UPnP</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QFrame" name="frame">
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="proxyIpLabel"> <widget class="QLabel" name="proxyIpLabel">
<property name="text"> <property name="text">
<string>Proxy &amp;IP:</string> <string>Proxy &amp;IP:</string>
@@ -171,20 +184,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="1" column="0">
<widget class="QValidatedLineEdit" name="proxyIp">
<property name="maximumSize">
<size>
<width>140</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>IP address of the proxy (e.g. 127.0.0.1)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="proxyPortLabel"> <widget class="QLabel" name="proxyPortLabel">
<property name="text"> <property name="text">
<string>&amp;Port:</string> <string>&amp;Port:</string>
@@ -197,20 +197,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="2" column="0">
<widget class="QLineEdit" name="proxyPort">
<property name="maximumSize">
<size>
<width>55</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Port of the proxy (e.g. 9050)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="socksVersionLabel"> <widget class="QLabel" name="socksVersionLabel">
<property name="text"> <property name="text">
<string>SOCKS &amp;Version:</string> <string>SOCKS &amp;Version:</string>
@@ -223,14 +210,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="6">
<widget class="QValueComboBox" name="socksVersion">
<property name="toolTip">
<string>SOCKS version of the proxy (e.g. 5)</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_Network"> <spacer name="horizontalSpacer_Network">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@@ -243,7 +223,41 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="2" column="1">
<widget class="QValueComboBox" name="socksVersion">
<property name="toolTip">
<string>SOCKS version of the proxy (e.g. 5)</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QValidatedLineEdit" name="proxyIp">
<property name="maximumSize">
<size>
<width>140</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>IP address of the proxy (e.g. 127.0.0.1)</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="proxyPort">
<property name="maximumSize">
<size>
<width>140</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Port of the proxy (e.g. 9050)</string>
</property>
</widget>
</item>
</layout> </layout>
</widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_Network"> <spacer name="verticalSpacer_Network">
@@ -265,6 +279,9 @@
<string>&amp;Window</string> <string>&amp;Window</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_Window"> <layout class="QVBoxLayout" name="verticalLayout_Window">
<item>
<widget class="QFrame" name="verticalFrame4">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QCheckBox" name="minimizeToTray"> <widget class="QCheckBox" name="minimizeToTray">
<property name="toolTip"> <property name="toolTip">
@@ -285,6 +302,9 @@
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer_Window"> <spacer name="verticalSpacer_Window">
<property name="orientation"> <property name="orientation">
@@ -304,9 +324,15 @@
<attribute name="title"> <attribute name="title">
<string>&amp;Display</string> <string>&amp;Display</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_Display"> <layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QFrame" name="verticalFrame5">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_1_Display"> <layout class="QHBoxLayout" name="horizontalLayout_display_Language">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item> <item>
<widget class="QLabel" name="langLabel"> <widget class="QLabel" name="langLabel">
<property name="text"> <property name="text">
@@ -330,7 +356,7 @@
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2_Display"> <layout class="QHBoxLayout" name="horizontalLayout_display_Units">
<item> <item>
<widget class="QLabel" name="unitLabel"> <widget class="QLabel" name="unitLabel">
<property name="text"> <property name="text">
@@ -353,6 +379,33 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_display_Currency">
<item>
<widget class="QLabel" name="currencyLabel">
<property name="text">
<string>Currency to show amounts in:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QValueComboBox" name="currency">
<property name="toolTip">
<string>Choose the default currency in which to show your total coin value.</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="verticalFrame6">
<layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QCheckBox" name="displayAddresses"> <widget class="QCheckBox" name="displayAddresses">
<property name="toolTip"> <property name="toolTip">
@@ -374,23 +427,24 @@
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_Display"> <widget class="QCheckBox" name="displayPromotions">
<property name="orientation"> <property name="toolTip">
<enum>Qt::Vertical</enum> <string>Whether to show casino promotions on the overview page or not.</string>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="text">
<size> <string>Display casino promotions</string>
<width>20</width>
<height>40</height>
</size>
</property> </property>
</spacer> </widget>
</item>
</layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
</widget> </widget>
</item> </item>
<item> <item row="1" column="0">
<widget class="QFrame" name="frameButtonBar">
<layout class="QHBoxLayout" name="horizontalLayout_Buttons"> <layout class="QHBoxLayout" name="horizontalLayout_Buttons">
<item> <item>
<spacer name="horizontalSpacer_1"> <spacer name="horizontalSpacer_1">
@@ -465,25 +519,27 @@
</widget> </widget>
</item> </item>
</layout> </layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>QValidatedLineEdit</class>
<extends>QLineEdit</extends>
<header>qvalidatedlineedit.h</header>
</customwidget>
<customwidget> <customwidget>
<class>BitcoinAmountField</class> <class>BitcoinAmountField</class>
<extends>QSpinBox</extends> <extends>QSpinBox</extends>
<header>bitcoinamountfield.h</header> <header>bitcoinamountfield.h</header>
<container>1</container>
</customwidget> </customwidget>
<customwidget> <customwidget>
<class>QValueComboBox</class> <class>QValueComboBox</class>
<extends>QComboBox</extends> <extends>QComboBox</extends>
<header>qvaluecombobox.h</header> <header>qvaluecombobox.h</header>
</customwidget> </customwidget>
<customwidget>
<class>QValidatedLineEdit</class>
<extends>QLineEdit</extends>
<header>qvalidatedlineedit.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections/>

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>573</width> <width>805</width>
<height>342</height> <height>550</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -31,49 +31,63 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,1"> <layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0">
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <property name="spacing">
<widget class="QFrame" name="frame"> <number>7</number>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property> </property>
<property name="frameShadow"> <item>
<enum>QFrame::Plain</enum> <widget class="QGroupBox" name="groupBox">
<property name="minimumSize">
<size>
<width>470</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>470</width>
<height>16777215</height>
</size>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_4">
<property name="topMargin">
<number>7</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<item> <item>
<layout class="QFormLayout" name="formLayout_2">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="horizontalSpacing">
<number>12</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_5">
<property name="font"> <property name="font">
<font> <font>
<pointsize>10</pointsize>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text"> <property name="text">
<string>Wallet</string> <string>Wallet</string>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QLabel" name="labelWalletStatus">
<property name="toolTip">
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the CasinoCoin network after a connection is established, but this process has not completed yet.</string>
</property>
<property name="styleSheet">
<string notr="true">QLabel { color: red; }</string>
</property>
<property name="text">
<string notr="true">(out of sync)</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item> <item>
<spacer name="horizontalSpacer_2"> <spacer name="horizontalSpacer_2">
<property name="orientation"> <property name="orientation">
@@ -87,30 +101,36 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QLabel" name="labelWalletStatus">
<property name="toolTip">
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the CasinoCoin network after a connection is established, but this process has not completed yet.</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text">
<string notr="true">(out of sync)</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item row="1" column="0">
<layout class="QFormLayout" name="formLayout_2"> <widget class="QLabel" name="labelBalanceText">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="horizontalSpacing">
<number>12</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>Balance:</string> <string>Balance:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="1" column="1">
<widget class="QLabel" name="labelBalance"> <widget class="QLabel" name="labelBalance">
<property name="font"> <property name="font">
<font> <font>
<pointsize>10</pointsize>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
@@ -124,19 +144,22 @@
<property name="text"> <property name="text">
<string notr="true">0 CSC</string> <string notr="true">0 CSC</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="labelUnconfirmedText">
<property name="text"> <property name="text">
<string>Unconfirmed:</string> <string>Unconfirmed:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<widget class="QLabel" name="labelUnconfirmed"> <widget class="QLabel" name="labelUnconfirmed">
<property name="font"> <property name="font">
<font> <font>
@@ -153,19 +176,22 @@
<property name="text"> <property name="text">
<string notr="true">0 CSC</string> <string notr="true">0 CSC</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<widget class="QLabel" name="labelImmatureText"> <widget class="QLabel" name="labelImmatureText">
<property name="text"> <property name="text">
<string>Immature:</string> <string>Immature:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="3" column="1">
<widget class="QLabel" name="labelImmature"> <widget class="QLabel" name="labelImmature">
<property name="font"> <property name="font">
<font> <font>
@@ -179,17 +205,79 @@
<property name="text"> <property name="text">
<string notr="true">0 CSC</string> <string notr="true">0 CSC</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item row="4" column="0">
</item> <widget class="QLabel" name="labelBalanceFiatText">
</layout> <property name="text">
<string>Estimated Fiat Balance:</string>
</property>
</widget> </widget>
</item> </item>
<item> <item row="4" column="1">
<widget class="QLabel" name="labelBalanceFiat">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="toolTip">
<string>Estimated Fiat balance calculated against current market value</string>
</property>
<property name="text">
<string notr="true">0</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lblTransactionCount">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Transactions:</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="txtTransactionCount">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">-</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -197,28 +285,17 @@
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>40</height> <height>100</height>
</size> </size>
</property> </property>
</spacer> </spacer>
</item> </item>
</layout>
</item>
<item> <item>
<widget class="QLabel" name="label_6"> <layout class="QVBoxLayout" name="verticalLayoutAdvertWidget"/>
<property name="text"> </item>
<string/> </layout>
</property>
<property name="pixmap">
<pixmap resource="../bitcoin.qrc">:/images/backg</pixmap>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="margin">
<number>-2</number>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@@ -226,36 +303,34 @@
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QFrame" name="frame_2"> <widget class="QGroupBox" name="groupBox_2">
<property name="frameShape"> <property name="minimumSize">
<enum>QFrame::NoFrame</enum> <size>
</property> <width>150</width>
<property name="frameShadow"> <height>0</height>
<enum>QFrame::Plain</enum> </size>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="topMargin">
<number>7</number>
</property>
<property name="bottomMargin">
<number>7</number>
</property>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">
<property name="text"> <property name="font">
<string>&lt;b&gt;Recent transactions&lt;/b&gt;</string> <font>
</property> <pointsize>10</pointsize>
</widget> </font>
</item>
<item>
<widget class="QLabel" name="labelTransactionsStatus">
<property name="toolTip">
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the CasinoCoin network after a connection is established, but this process has not completed yet.</string>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QLabel { color: red; }</string> <string notr="true">color: rgb(166, 27, 31);</string>
</property> </property>
<property name="text"> <property name="text">
<string notr="true">(out of sync)</string> <string>&lt;b&gt;Recent transactions&lt;/b&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
@@ -272,6 +347,22 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QLabel" name="labelTransactionsStatus">
<property name="toolTip">
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the CasinoCoin network after a connection is established, but this process has not completed yet.</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(166, 27, 31);</string>
</property>
<property name="text">
<string notr="true">(out of sync)</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>
@@ -296,19 +387,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<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>
</layout> </layout>
</item> </item>
</layout> </layout>

116
src/qt/forms/pryptopage.ui Normal file
View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PryptoPage</class>
<widget class="QDialog" name="PryptoPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>507</width>
<height>282</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>481</width>
<height>261</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="leftMargin">
<number>50</number>
</property>
<property name="rightMargin">
<number>50</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lblHelp">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="text">
<string>Enter your Prypto Code and Security Code to redeem your Prypto card.</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblPryptoCode">
<property name="text">
<string>Prypto Code</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="txtPryptoCode"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lblSecurityCode">
<property name="text">
<string>Security Code</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="txtSecurityCode">
<property name="inputMethodHints">
<set>Qt::ImhDigitsOnly</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="butRedeem">
<property name="styleSheet">
<string notr="true">background-color: rgb(166, 27, 31);
color: rgb(255, 255, 255);
pressed
{
background-color: rgb(166, 27, 31);
}</string>
</property>
<property name="text">
<string>Redeem</string>
</property>
<property name="icon">
<iconset resource="../bitcoin.qrc">
<normaloff>:/icons/res/icons/prypto.png</normaloff>:/icons/res/icons/prypto.png</iconset>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources>
<include location="../bitcoin.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>740</width> <width>740</width>
<height>450</height> <height>468</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -17,7 +17,7 @@
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tab_info"> <widget class="QWidget" name="tab_info">
<attribute name="title"> <attribute name="title">

View File

@@ -13,7 +13,7 @@
<property name="windowTitle"> <property name="windowTitle">
<string>Send Coins</string> <string>Send Coins</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,0"> <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,1">
<property name="bottomMargin"> <property name="bottomMargin">
<number>8</number> <number>8</number>
</property> </property>
@@ -39,7 +39,7 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayoutCoinControl2"> <layout class="QVBoxLayout" name="verticalLayoutCoinControl2">
<property name="spacing"> <property name="spacing">
<number>-1</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
@@ -84,7 +84,7 @@
</font> </font>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">font-weight:bold;</string> <string notr="true">color:rgb(166,27,31);font-weight:bold;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Coin Control Features</string> <string>Coin Control Features</string>
@@ -130,7 +130,7 @@
</font> </font>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">color:red;font-weight:bold;</string> <string notr="true">color:rgb(166,27,31);font-weight:bold;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Insufficient funds!</string> <string>Insufficient funds!</string>
@@ -173,7 +173,16 @@
<string notr="true"/> <string notr="true"/>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayoutCoinControl5"> <layout class="QHBoxLayout" name="horizontalLayoutCoinControl5">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@@ -615,48 +624,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<height>165</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="entries">
<property name="spacing">
<number>6</number>
</property>
</layout>
</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>
</layout>
</widget>
</widget>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
@@ -702,6 +669,19 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing"> <property name="spacing">
@@ -716,6 +696,12 @@
</item> </item>
<item> <item>
<widget class="QLabel" name="labelBalance"> <widget class="QLabel" name="labelBalance">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="cursor"> <property name="cursor">
<cursorShape>IBeamCursor</cursorShape> <cursorShape>IBeamCursor</cursorShape>
</property> </property>
@@ -729,19 +715,6 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QPushButton" name="sendButton"> <widget class="QPushButton" name="sendButton">
<property name="minimumSize"> <property name="minimumSize">
@@ -753,6 +726,17 @@
<property name="toolTip"> <property name="toolTip">
<string>Confirm the send action</string> <string>Confirm the send action</string>
</property> </property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(166, 27, 31);
color: rgb(255, 255, 255);
pressed
{
background-color: rgb(166, 27, 31);
}</string>
</property>
<property name="text"> <property name="text">
<string>S&amp;end</string> <string>S&amp;end</string>
</property> </property>
@@ -767,6 +751,77 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>832</width>
<height>169</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="entries_2">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="entries">
<property name="spacing">
<number>6</number>
</property>
</layout>
</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>
</layout>
</widget>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources> <resources>

View File

@@ -49,9 +49,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1">
<widget class="BitcoinAmountField" name="payAmount"/>
</item>
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">
<property name="text"> <property name="text">
@@ -80,42 +77,19 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> </layout>
<widget class="QToolButton" name="addressBookButton"> </item>
<item row="4" column="1">
<widget class="QValidatedLineEdit" name="addAsLabel">
<property name="toolTip"> <property name="toolTip">
<string>Choose address from address book</string> <string>Enter a label for this address to add it to your address book</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../bitcoin.qrc">
<normaloff>:/icons/address-book</normaloff>:/icons/address-book</iconset>
</property>
<property name="shortcut">
<string>Alt+A</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QToolButton" name="pasteButton"> <widget class="QPushButton" name="deleteButton">
<property name="toolTip">
<string>Paste address from clipboard</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../bitcoin.qrc">
<normaloff>:/icons/editpaste</normaloff>:/icons/editpaste</iconset>
</property>
<property name="shortcut">
<string>Alt+P</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="deleteButton">
<property name="toolTip"> <property name="toolTip">
<string>Remove this recipient</string> <string>Remove this recipient</string>
</property> </property>
@@ -126,31 +100,104 @@
<iconset resource="../bitcoin.qrc"> <iconset resource="../bitcoin.qrc">
<normaloff>:/icons/remove</normaloff>:/icons/remove</iconset> <normaloff>:/icons/remove</normaloff>:/icons/remove</iconset>
</property> </property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="addressBookButton">
<property name="toolTip">
<string>Choose address from address book</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../bitcoin.qrc">
<normaloff>:/icons/address-book</normaloff>:/icons/address-book</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="shortcut">
<string>Alt+A</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pasteButton">
<property name="toolTip">
<string>Paste address from clipboard</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../bitcoin.qrc">
<normaloff>:/icons/editpaste</normaloff>:/icons/editpaste</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="shortcut">
<string>Alt+P</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="1"> <item row="5" column="1" colspan="2">
<widget class="QValidatedLineEdit" name="addAsLabel"> <widget class="BitcoinAmountField" name="payAmount">
<property name="toolTip"> <property name="sizePolicy">
<string>Enter a label for this address to add it to your address book</string> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>BitcoinAmountField</class>
<extends>QLineEdit</extends>
<header>bitcoinamountfield.h</header>
<container>1</container>
</customwidget>
<customwidget> <customwidget>
<class>QValidatedLineEdit</class> <class>QValidatedLineEdit</class>
<extends>QLineEdit</extends> <extends>QLineEdit</extends>
<header>qvalidatedlineedit.h</header> <header>qvalidatedlineedit.h</header>
</customwidget> </customwidget>
<customwidget>
<class>BitcoinAmountField</class>
<extends>QSpinBox</extends>
<header>bitcoinamountfield.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../bitcoin.qrc"/> <include location="../bitcoin.qrc"/>

View File

@@ -20,7 +20,7 @@
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tabSignMessage"> <widget class="QWidget" name="tabSignMessage">
<attribute name="title"> <attribute name="title">

44
src/qt/gui20_skin.cpp Normal file
View File

@@ -0,0 +1,44 @@
#include "gui20_skin.h"
GUI20Skin::GUI20Skin( QObject* a_pParent )
: QObject( a_pParent )
, colorToolbarMainGradientBegin( "#9c181c" )
// , colorToolbarMainGradientEnd( "#ae1e22" )
, colorToolbarMainGradientEnd( "#a61b22" )
, colorToolbarMainCurrent( "#761316" )
, colorToolbarMainBottomCurrent( "#e1252b" )
, colorToolbarMainTextCurrent( "#ffffff" )
, colorToolbarMainTextNormal( "#3f0a0c" )
, colorToolbarMainTextWebsiteURL( colorToolbarMainTextCurrent )
, colorToolbarMainTextVisitWebsite( "#ffffaf" )
, colorToolbarMainTextShadow( "#c72427" )
, colorWindowBackground( "#f0f0f0" )
, colorFrameBackground( "#ffffff" )
, colorButtonTopGradient( colorFrameBackground )
, colorButtonBottomGradient( "#F2F2F2" )
, colorButtonMid( "#F8F8F8" )
, colorButtonDark( colorButtonBottomGradient )
, colorButtonLight( colorFrameBackground )
, colorListCurrent( "#F5E5E5" )
, colorListValue( colorFrameBackground )
, colorListValueAlternative( "#F5F5F5" )
, colorTextActive( "#404040" )
, colorTextActiveAutocomplete( "#6B3D3D" )
, colorTextDisabled( "#707070" )
, colorTextDisabledAutocomplete( "#8B5D5D" )
, colorTextBlack("#000000")
{
}
GUI20Skin& GUI20Skin::Instance()
{
static GUI20Skin m_oInstance;
return m_oInstance;
}
GUI20Skin::~GUI20Skin()
{
}

128
src/qt/gui20_skin.h Normal file
View File

@@ -0,0 +1,128 @@
#ifndef GUI20_SKIN_H
#define GUI20_SKIN_H
#include <QColor>
#include <QString>
#include <QMutex>
#include <QObject>
class GUI20Skin : public QObject
{
Q_OBJECT
Q_PROPERTY( QColor colorToolbarMainGradientBegin READ GetColorToolbarMainGradientBegin CONSTANT )
Q_PROPERTY( QColor colorToolbarMainGradientEnd READ GetColorToolbarMainGradientEnd CONSTANT )
Q_PROPERTY( QColor colorToolbarMainCurrent READ GetColorToolbarMainCurrent CONSTANT )
Q_PROPERTY( QColor colorToolbarMainBottomCurrent READ GetColorToolbarBottomCurrent CONSTANT )
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_PROPERTY( QColor colorWindowBackground READ GetColorWindowBackground CONSTANT )
Q_PROPERTY( QColor colorFrameBackground READ GetColorFrameBackground CONSTANT )
Q_PROPERTY( QColor colorButtonTopGradient READ GetColorButtonTopGradient CONSTANT )
Q_PROPERTY( QColor colorButtonBottomGradient READ GetColorButtonBottomGradient CONSTANT )
Q_PROPERTY( QColor colorButtonMid READ GetColorButtonMid CONSTANT )
Q_PROPERTY( QColor colorButtonDark READ GetColorButtonDark CONSTANT )
Q_PROPERTY( QColor colorButtonLight READ GetColorButtonLight CONSTANT )
Q_PROPERTY( QColor colorListCurrent READ GetColorListCurrent CONSTANT )
Q_PROPERTY( QColor colorListValue READ GetColorListValue CONSTANT )
Q_PROPERTY( QColor colorListValueAlternative READ GetColorListValueAlternative CONSTANT )
Q_PROPERTY( QColor colorTextActive READ GetColorTextActive CONSTANT )
Q_PROPERTY( QColor colorTextActiveAutocomplete READ GetColorTextActiveAutocomplete CONSTANT )
Q_PROPERTY( QColor colorTextDisabled READ GetColorTextDisabled CONSTANT )
Q_PROPERTY( QColor colorTextDisabledAutocomplete READ GetColorTextDisabledAutocomplete CONSTANT )
Q_PROPERTY( QColor colorTextBlack READ GetColorTextBlack CONSTANT )
Q_ENUMS( ESizeConstants )
public:
enum ESizeConstants
{
ToolbarMainHeight = 77,
ToolbarMainBottomPartHeight = 5
};
const QColor GetColorToolbarMainGradientBegin() const {return colorToolbarMainGradientBegin;}
const QColor GetColorToolbarMainGradientEnd() const {return colorToolbarMainGradientEnd;}
const QColor GetColorToolbarMainCurrent() const {return colorToolbarMainCurrent;}
const QColor GetColorToolbarBottomCurrent() const {return colorToolbarMainBottomCurrent;}
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;}
const QColor GetColorWindowBackground() const {return colorWindowBackground;}
const QColor GetColorFrameBackground() const {return colorFrameBackground;}
const QColor GetColorButtonTopGradient() const {return colorButtonTopGradient;}
const QColor GetColorButtonBottomGradient() const {return colorButtonBottomGradient;}
const QColor GetColorButtonMid() const {return colorButtonMid;}
const QColor GetColorButtonDark() const {return colorButtonDark;}
const QColor GetColorButtonLight() const {return colorButtonLight;}
const QColor GetColorListCurrent() const {return colorListCurrent;}
const QColor GetColorListValue() const {return colorListValue;}
const QColor GetColorListValueAlternative() const {return colorListValueAlternative;}
const QColor GetColorTextActive() const {return colorTextActive;}
const QColor GetColorTextActiveAutocomplete() const {return colorTextActiveAutocomplete;}
const QColor GetColorTextDisabled() const {return colorTextDisabled;}
const QColor GetColorTextDisabledAutocomplete() const {return colorTextDisabledAutocomplete;}
const QColor GetColorTextBlack() const {return colorTextBlack;}
private:
const QColor colorToolbarMainGradientBegin;
const QColor colorToolbarMainGradientEnd;
const QColor colorToolbarMainCurrent;
const QColor colorToolbarMainBottomCurrent;
const QColor colorToolbarMainTextCurrent;
const QColor colorToolbarMainTextNormal;
const QColor colorToolbarMainTextShadow;
const QColor colorToolbarMainTextWebsiteURL;
const QColor colorToolbarMainTextVisitWebsite;
const QColor colorWindowBackground;
const QColor colorFrameBackground;
const QColor colorButtonTopGradient;
const QColor colorButtonBottomGradient;
const QColor colorButtonMid;
const QColor colorButtonDark;
const QColor colorButtonLight;
const QColor colorListCurrent;
const QColor colorListValue;
const QColor colorListValueAlternative;
const QColor colorTextActive;
const QColor colorTextActiveAutocomplete;
const QColor colorTextDisabled;
const QColor colorTextDisabledAutocomplete;
const QColor colorTextBlack;
public:
static GUI20Skin& Instance();
private:
GUI20Skin( QObject* a_pParent = 0 );
virtual ~GUI20Skin();
};
#endif // GUI20_SKIN_H

View File

@@ -2,7 +2,7 @@
#define GUICONSTANTS_H #define GUICONSTANTS_H
/* Milliseconds between model updates */ /* Milliseconds between model updates */
static const int MODEL_UPDATE_DELAY = 250; static const int MODEL_UPDATE_DELAY = 1000;
/* AskPassphraseDialog -- Maximum passphrase length */ /* AskPassphraseDialog -- Maximum passphrase length */
static const int MAX_PASSPHRASE_SIZE = 1024; static const int MAX_PASSPHRASE_SIZE = 1024;
@@ -16,7 +16,9 @@ static const int STATUSBAR_ICONSIZE = 16;
/* Transaction list -- unconfirmed transaction */ /* Transaction list -- unconfirmed transaction */
#define COLOR_UNCONFIRMED QColor(128, 128, 128) #define COLOR_UNCONFIRMED QColor(128, 128, 128)
/* Transaction list -- negative amount */ /* Transaction list -- negative amount */
#define COLOR_NEGATIVE QColor(255, 0, 0) #define COLOR_NEGATIVE QColor(166, 27, 31)
/* Transaction list -- positive amount */
#define COLOR_POSITIVE QColor(27, 166, 31)
/* Transaction list -- bare address (without label) */ /* Transaction list -- bare address (without label) */
#define COLOR_BAREADDRESS QColor(140, 140, 140) #define COLOR_BAREADDRESS QColor(140, 140, 140)

View File

@@ -32,7 +32,7 @@
#ifdef _WIN32_WINNT #ifdef _WIN32_WINNT
#undef _WIN32_WINNT #undef _WIN32_WINNT
#endif #endif
#define _WIN32_WINNT 0x0501 #define _WIN32_WINNT 0x0600
#ifdef _WIN32_IE #ifdef _WIN32_IE
#undef _WIN32_IE #undef _WIN32_IE
#endif #endif
@@ -84,7 +84,7 @@ void setupAmountWidget(QLineEdit *widget, QWidget *parent)
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
{ {
// return if URI is not valid or is no bitcoin URI // return if URI is not valid or is no bitcoin URI
if(!uri.isValid() || uri.scheme() != QString("casinocoin")) if(!uri.isValid() || uri.scheme() != QString(COIN_NAME.c_str()))
return false; return false;
SendCoinsRecipient rv; SendCoinsRecipient rv;
@@ -139,9 +139,9 @@ bool parseBitcoinURI(QString uri, SendCoinsRecipient *out)
// //
// Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host,
// which will lower-case it (and thus invalidate the address). // which will lower-case it (and thus invalidate the address).
if(uri.startsWith("casinocoin://")) if(uri.startsWith(QString((COIN_NAME + "://").c_str())))
{ {
uri.replace(0, 11, "casinocoin:"); uri.replace(0, (COIN_NAME.length()+1), QString((COIN_NAME + ":").c_str()));
} }
QUrl uriInstance(uri); QUrl uriInstance(uri);
return parseBitcoinURI(uriInstance, out); return parseBitcoinURI(uriInstance, out);
@@ -301,7 +301,7 @@ bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt)
#ifdef WIN32 #ifdef WIN32
boost::filesystem::path static StartupShortcutPath() boost::filesystem::path static StartupShortcutPath()
{ {
return GetSpecialFolderPath(CSIDL_STARTUP) / "CasinoCoin.lnk"; return GetSpecialFolderPath(CSIDL_STARTUP) / (COIN_NAME_DISPLAY + ".lnk").c_str();
} }
bool GetStartOnSystemStartup() bool GetStartOnSystemStartup()
@@ -383,7 +383,8 @@ boost::filesystem::path static GetAutostartDir()
boost::filesystem::path static GetAutostartFilePath() boost::filesystem::path static GetAutostartFilePath()
{ {
return GetAutostartDir() / "casinocoin.desktop"; std::string filename (""+ COIN_NAME + ".desktop");
return GetAutostartDir() / filename;
} }
bool GetStartOnSystemStartup() bool GetStartOnSystemStartup()
@@ -424,7 +425,7 @@ bool SetStartOnSystemStartup(bool fAutoStart)
// Write a bitcoin.desktop file to the autostart directory: // Write a bitcoin.desktop file to the autostart directory:
optionFile << "[Desktop Entry]\n"; optionFile << "[Desktop Entry]\n";
optionFile << "Type=Application\n"; optionFile << "Type=Application\n";
optionFile << "Name=CasinoCoin\n"; optionFile << "Name="+ COIN_NAME_DISPLAY + "\n";
optionFile << "Exec=" << pszExePath << " -min\n"; optionFile << "Exec=" << pszExePath << " -min\n";
optionFile << "Terminal=false\n"; optionFile << "Terminal=false\n";
optionFile << "Hidden=false\n"; optionFile << "Hidden=false\n";
@@ -495,10 +496,10 @@ bool SetStartOnSystemStartup(bool fAutoStart) { return false; }
HelpMessageBox::HelpMessageBox(QWidget *parent) : HelpMessageBox::HelpMessageBox(QWidget *parent) :
QMessageBox(parent) QMessageBox(parent)
{ {
header = tr("CasinoCoin-Qt") + " " + tr("version") + " " + header = tr((COIN_NAME_DISPLAY + "-Qt").c_str()) + " " + tr("version") + " " +
QString::fromStdString(FormatFullVersion()) + "\n\n" + QString::fromStdString(FormatFullVersion()) + "\n\n" +
tr("Usage:") + "\n" + tr("Usage:") + "\n" +
" casinocoin-qt [" + tr("command-line options") + "] " + "\n"; QString::fromStdString(" "+ COIN_NAME + "-qt [") + tr("command-line options") + "] " + "\n";
coreOptions = QString::fromStdString(HelpMessage()); coreOptions = QString::fromStdString(HelpMessage());
@@ -507,7 +508,7 @@ HelpMessageBox::HelpMessageBox(QWidget *parent) :
" -min " + tr("Start minimized") + "\n" + " -min " + tr("Start minimized") + "\n" +
" -splash " + tr("Show splash screen on startup (default: 1)") + "\n"; " -splash " + tr("Show splash screen on startup (default: 1)") + "\n";
setWindowTitle(tr("CasinoCoin-Qt")); setWindowTitle(tr((COIN_NAME_DISPLAY + "-Qt").c_str()));
setTextFormat(Qt::PlainText); setTextFormat(Qt::PlainText);
// setMinimumWidth is ignored for QMessageBox so put in non-breaking spaces to make it wider. // setMinimumWidth is ignored for QMessageBox so put in non-breaking spaces to make it wider.
setText(header + QString(QChar(0x2003)).repeated(50)); setText(header + QString(QChar(0x2003)).repeated(50));

130
src/qt/infopage.cpp Normal file
View File

@@ -0,0 +1,130 @@
#include "infopage.h"
#include "ui_infopage.h"
#include "walletmodel.h"
#include "clientmodel.h"
#include "bitcoinrpc.h"
#include <QDateTime>
#include <QDebug>
#include "bitcoinunits.h"
#include "main.h"
#include "overviewpage.h"
#include "qtquick_controls/cpp/guiexchangeswidget.h"
#include "twitter/twitterwidget.h"
using namespace std;
InfoPage::InfoPage(QWidget *parent) :
QDialog(parent),
ui(new Ui::InfoPage),
exchangesWidget( 0 ),
twitterWidget( 0 )
{
ui->setupUi(this);
ui->coinInfoBox->setMinimumHeight(250);
ui->twitterFeedBox->setMinimumHeight(250);
ui->exchangeInfoBox->setMinimumHeight(250);
createTwitterWidget();
createExchangesWidget();
}
void InfoPage::setWalletModel(WalletModel *model)
{
this->walletModel = model;
}
void InfoPage::setClientModel(ClientModel *model)
{
this->clientModel = model;
if(model)
{
// Subscribe to information, replies, messages, errors
connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
connect(model, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
setNumConnections(model->getNumConnections());
setNumBlocks(model->getNumBlocks(), model->getNumBlocksOfPeers());
}
}
void InfoPage::setNumConnections(int count)
{
ui->txtConnections->setText(QString::number(count));
}
void InfoPage::setNumBlocks(int count, int countOfPeers)
{
ui->txtBlockHeight->setText(QString::number(count));
// block height changed so update all possible values as well
if(clientModel)
{
QDateTime blockTime = clientModel->getLastBlockDate().toTimeSpec(Qt::UTC);
QString formattedBlockTime = blockTime.toString("dd-MM-yyyy HH:mm:ss");
formattedBlockTime.append(" UTC");
ui->txtLastBlockTime->setText(formattedBlockTime);
ui->txtDifficulty->setText(QString::number(GetDifficulty()));
ui->txtCoinSupply->setText(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, GetTotalCoinSupply(count, false)));
double megaHash = GetNetworkHashRate(-1, count) / 1000000;
ui->txtHashRate->setText(QString::number(megaHash,'f',0).append(" MHash/sec"));
}
}
double InfoPage::GetNetworkHashRate(int lookup, int height) {
CBlockIndex *pb = pindexBest;
if (height >= 0 && height < nBestHeight)
pb = FindBlockByHeight(height);
if (pb == NULL || !pb->nHeight)
return 0;
// If lookup is -1, then use blocks since last difficulty change.
if (lookup <= 0)
lookup = pb->nHeight % 2016 + 1;
// If lookup is larger than chain, then set it to chain length.
if (lookup > pb->nHeight)
lookup = pb->nHeight;
CBlockIndex *pb0 = pb;
int64 minTime = pb0->GetBlockTime();
int64 maxTime = minTime;
for (int i = 0; i < lookup; i++) {
pb0 = pb0->pprev;
int64 time = pb0->GetBlockTime();
minTime = std::min(time, minTime);
maxTime = std::max(time, maxTime);
}
// In case there's a situation where minTime == maxTime, we don't want a divide by zero exception.
if (minTime == maxTime)
return 0;
uint256 workDiff = pb->nChainWork - pb0->nChainWork;
int64 timeDiff = maxTime - minTime;
double workDiffDouble = workDiff.getdouble();
return workDiffDouble / timeDiff;
}
InfoPage::~InfoPage()
{
delete ui;
}
void InfoPage::createTwitterWidget()
{
twitterWidget = new TwitterWidget( this );
ui->verticalLayoutTwitter->addWidget( twitterWidget->dockQmlToWidget() );
}
void InfoPage::createExchangesWidget()
{
exchangesWidget = new GUIExchangesWidget( this );
exchangesWidget->slotPopulateExchangesFromWeb();
ui->verticalLayoutExchanges->addWidget( exchangesWidget->dockQmlToWidget() );
}
void InfoPage::setCoinValues(QString coinValue, QString coinFiatValue, QString marketCapital)
{
ui->txtCoinValue->setText(coinValue);
ui->txtCoinFiatValue->setText(coinFiatValue);
ui->txtEstimatedMarketCapital->setText(marketCapital);
}

45
src/qt/infopage.h Normal file
View File

@@ -0,0 +1,45 @@
#ifndef INFOPAGE_H
#define INFOPAGE_H
#include <QDialog>
class WalletModel;
class ClientModel;
class GUIExchangesWidget;
class TwitterWidget;
namespace Ui {
class InfoPage;
}
class InfoPage : public QDialog
{
Q_OBJECT
public slots:
/** Set number of connections shown in the UI */
void setNumConnections(int count);
/** Set number of blocks shown in the UI */
void setNumBlocks(int count, int countOfPeers);
/** Set coin values */
void setCoinValues(const QString coinValue, const QString coinFiatValue, const QString marketCapital);
public:
explicit InfoPage(QWidget *parent = 0);
void setWalletModel(WalletModel *model);
void setClientModel(ClientModel *model);
~InfoPage();
private:
Ui::InfoPage *ui;
WalletModel *walletModel;
ClientModel *clientModel;
GUIExchangesWidget* exchangesWidget;
TwitterWidget* twitterWidget;
void createTwitterWidget();
void createExchangesWidget();
double GetNetworkHashRate(int lookup, int height);
};
#endif // INFOPAGE_H

View File

@@ -2,6 +2,7 @@
#include "ui_optionsdialog.h" #include "ui_optionsdialog.h"
#include "bitcoinunits.h" #include "bitcoinunits.h"
#include "currencies.h"
#include "monitoreddatamapper.h" #include "monitoreddatamapper.h"
#include "netbase.h" #include "netbase.h"
#include "optionsmodel.h" #include "optionsmodel.h"
@@ -80,6 +81,7 @@ OptionsDialog::OptionsDialog(QWidget *parent) :
} }
ui->unit->setModel(new BitcoinUnits(this)); ui->unit->setModel(new BitcoinUnits(this));
ui->currency->setModel(new Currencies(this));
/* Widget-to-option mapper */ /* Widget-to-option mapper */
mapper = new MonitoredDataMapper(this); mapper = new MonitoredDataMapper(this);
@@ -106,7 +108,6 @@ void OptionsDialog::setModel(OptionsModel *model)
if(model) if(model)
{ {
connect(model, SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); connect(model, SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
mapper->setModel(model); mapper->setModel(model);
setMapper(); setMapper();
mapper->toFirst(); mapper->toFirst();
@@ -145,8 +146,10 @@ void OptionsDialog::setMapper()
/* Display */ /* Display */
mapper->addMapping(ui->lang, OptionsModel::Language); mapper->addMapping(ui->lang, OptionsModel::Language);
mapper->addMapping(ui->unit, OptionsModel::DisplayUnit); mapper->addMapping(ui->unit, OptionsModel::DisplayUnit);
mapper->addMapping(ui->currency, OptionsModel::DisplayFiatCurrency);
mapper->addMapping(ui->displayAddresses, OptionsModel::DisplayAddresses); mapper->addMapping(ui->displayAddresses, OptionsModel::DisplayAddresses);
mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures); mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures);
mapper->addMapping(ui->displayPromotions, OptionsModel::DisplayPromotions);
} }
void OptionsDialog::enableApplyButton() void OptionsDialog::enableApplyButton()

View File

@@ -1,6 +1,7 @@
#include "optionsmodel.h" #include "optionsmodel.h"
#include "bitcoinunits.h" #include "bitcoinunits.h"
#include "currencies.h"
#include "init.h" #include "init.h"
#include "walletdb.h" #include "walletdb.h"
#include "guiutil.h" #include "guiutil.h"
@@ -49,6 +50,8 @@ void OptionsModel::Init()
nTransactionFee = settings.value("nTransactionFee").toLongLong(); nTransactionFee = settings.value("nTransactionFee").toLongLong();
language = settings.value("language", "").toString(); language = settings.value("language", "").toString();
fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool(); fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool();
nDisplayFiatCurrency = settings.value("nDisplayFiatCurrency", Currencies::USD).toInt();
fDisplayPromotions = settings.value("fDisplayPromotions", true).toBool();
// These are shared with core Bitcoin; we want // These are shared with core Bitcoin; we want
// command-line options to override the GUI settings: // command-line options to override the GUI settings:
@@ -199,6 +202,10 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
return settings.value("language", ""); return settings.value("language", "");
case CoinControlFeatures: case CoinControlFeatures:
return QVariant(fCoinControlFeatures); return QVariant(fCoinControlFeatures);
case DisplayFiatCurrency:
return QVariant(nDisplayFiatCurrency);
case DisplayPromotions:
return QVariant(fDisplayPromotions);
default: default:
return QVariant(); return QVariant();
} }
@@ -274,6 +281,11 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
settings.setValue("nDisplayUnit", nDisplayUnit); settings.setValue("nDisplayUnit", nDisplayUnit);
emit displayUnitChanged(nDisplayUnit); emit displayUnitChanged(nDisplayUnit);
break; break;
case DisplayFiatCurrency:
nDisplayFiatCurrency = value.toInt();
settings.setValue("nDisplayFiatCurrency", nDisplayFiatCurrency);
emit displayCurrencyChanged(nDisplayFiatCurrency);
break;
case DisplayAddresses: case DisplayAddresses:
bDisplayAddresses = value.toBool(); bDisplayAddresses = value.toBool();
settings.setValue("bDisplayAddresses", bDisplayAddresses); settings.setValue("bDisplayAddresses", bDisplayAddresses);
@@ -287,6 +299,12 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
emit coinControlFeaturesChanged(fCoinControlFeatures); emit coinControlFeaturesChanged(fCoinControlFeatures);
} }
break; break;
case DisplayPromotions: {
fDisplayPromotions = value.toBool();
settings.setValue("fDisplayPromotions", fDisplayPromotions);
emit displayPromotionsChanged(fDisplayPromotions);
}
break;
default: default:
break; break;
} }

View File

@@ -27,9 +27,11 @@ public:
ProxySocksVersion, // int ProxySocksVersion, // int
Fee, // qint64 Fee, // qint64
DisplayUnit, // BitcoinUnits::Unit DisplayUnit, // BitcoinUnits::Unit
DisplayFiatCurrency, // Currencies::FiatCurrencyID
DisplayAddresses, // bool DisplayAddresses, // bool
Language, // QString Language, // QString
CoinControlFeatures, // bool CoinControlFeatures, // bool
DisplayPromotions, // bool
OptionIDRowCount, OptionIDRowCount,
}; };
@@ -51,6 +53,8 @@ public:
bool getDisplayAddresses() { return bDisplayAddresses; } bool getDisplayAddresses() { return bDisplayAddresses; }
QString getLanguage() { return language; } QString getLanguage() { return language; }
bool getCoinControlFeatures(); bool getCoinControlFeatures();
int getDisplayFiatCurrency() { return nDisplayFiatCurrency; }
bool getDisplayPromotions() { return fDisplayPromotions; }
private: private:
int nDisplayUnit; int nDisplayUnit;
@@ -59,11 +63,15 @@ private:
bool fMinimizeOnClose; bool fMinimizeOnClose;
QString language; QString language;
bool fCoinControlFeatures; bool fCoinControlFeatures;
int nDisplayFiatCurrency;
bool fDisplayPromotions;
signals: signals:
void displayUnitChanged(int unit); void displayUnitChanged(int unit);
void transactionFeeChanged(qint64); void transactionFeeChanged(qint64);
void coinControlFeaturesChanged(bool); void coinControlFeaturesChanged(bool);
void displayCurrencyChanged(int currency);
void displayPromotionsChanged(bool);
}; };
#endif // OPTIONSMODEL_H #endif // OPTIONSMODEL_H

View File

@@ -4,17 +4,23 @@
#include "clientmodel.h" #include "clientmodel.h"
#include "walletmodel.h" #include "walletmodel.h"
#include "bitcoinunits.h" #include "bitcoinunits.h"
#include "currencies.h"
#include "optionsmodel.h" #include "optionsmodel.h"
#include "transactiontablemodel.h" #include "transactiontablemodel.h"
#include "transactionfilterproxy.h" #include "transactionfilterproxy.h"
#include "guiutil.h" #include "guiutil.h"
#include "guiconstants.h" #include "guiconstants.h"
#include "qtquick_controls/cpp/guibannerwidget.h"
#include "CSCPublicAPI/casinocoinwebapi.h"
#include "CSCPublicAPI/casinocoinwebapiparser.h"
#include <QAbstractItemDelegate> #include <QAbstractItemDelegate>
#include <QPainter> #include <QPainter>
#include <QDebug>
#define DECORATION_SIZE 64 #define DECORATION_SIZE 64
#define NUM_ITEMS 3 #define NUM_ITEMS 5
class TxViewDelegate : public QAbstractItemDelegate class TxViewDelegate : public QAbstractItemDelegate
{ {
@@ -65,16 +71,23 @@ public:
} }
else else
{ {
foreground = option.palette.color(QPalette::Text); foreground = COLOR_POSITIVE;
} }
painter->setPen(foreground); painter->setPen(foreground);
QString amountText = BitcoinUnits::formatWithUnit(unit, amount, true); QString amountText = BitcoinUnits::formatWithUnit(unit, amount, true);
QFont amountFont = painter->font();
if(!confirmed) if(!confirmed)
{ {
amountText = QString("[") + amountText + QString("]"); amountText = QString("[") + amountText + QString("]");
} }
else
{
amountFont.setWeight(QFont::Bold);
painter->setFont(amountFont);
}
painter->drawText(amountRect, Qt::AlignRight|Qt::AlignVCenter, amountText); painter->drawText(amountRect, Qt::AlignRight|Qt::AlignVCenter, amountText);
amountFont.setWeight(QFont::Bold);
painter->setFont(amountFont);
painter->setPen(option.palette.color(QPalette::Text)); painter->setPen(option.palette.color(QPalette::Text));
painter->drawText(amountRect, Qt::AlignLeft|Qt::AlignVCenter, GUIUtil::dateTimeStr(date)); painter->drawText(amountRect, Qt::AlignLeft|Qt::AlignVCenter, GUIUtil::dateTimeStr(date));
@@ -100,17 +113,25 @@ OverviewPage::OverviewPage(QWidget *parent) :
currentUnconfirmedBalance(-1), currentUnconfirmedBalance(-1),
currentImmatureBalance(-1), currentImmatureBalance(-1),
txdelegate(new TxViewDelegate()), txdelegate(new TxViewDelegate()),
filter(0) filter(0),
advertsWidget(0),
cscWebApiParser( new CasinoCoinWebAPIParser( this ) ),
cscWebApi( new CasinoCoinWebAPI( this ) )
{ {
ui->setupUi(this); ui->setupUi(this);
createAdvertsWidget();
// Recent transactions // Recent transactions
ui->listTransactions->setItemDelegate(txdelegate); ui->listTransactions->setItemDelegate(txdelegate);
ui->listTransactions->setIconSize(QSize(DECORATION_SIZE, DECORATION_SIZE)); ui->listTransactions->setIconSize(QSize(DECORATION_SIZE, DECORATION_SIZE));
ui->listTransactions->setMinimumHeight(NUM_ITEMS * (DECORATION_SIZE + 2)); ui->listTransactions->setMinimumHeight(NUM_ITEMS * (DECORATION_SIZE + 2));
ui->listTransactions->setMinimumWidth(350);
ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect, false); ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect, false);
connect(ui->listTransactions, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTransactionClicked(QModelIndex))); connect(ui->listTransactions, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTransactionClicked(QModelIndex)));
connect( cscWebApi, SIGNAL( signalResponseReady(const QByteArray&)), cscWebApiParser, SLOT( slotParseAnswer(const QByteArray&)), Qt::UniqueConnection );
connect( cscWebApi, SIGNAL( signalNetworkError(QNetworkReply::NetworkError,const QUrl)), cscWebApiParser, SLOT( slotNetworkError(QNetworkReply::NetworkError,const QUrl)), Qt::UniqueConnection );
connect( cscWebApiParser, SIGNAL( signalCoinInfoParsed(JsonCoinInfoParser*)), this, SLOT( updateCoinInfoFromWeb(JsonCoinInfoParser*)), Qt::UniqueConnection );
// init "out of sync" warning labels // init "out of sync" warning labels
ui->labelWalletStatus->setText("(" + tr("out of sync") + ")"); ui->labelWalletStatus->setText("(" + tr("out of sync") + ")");
@@ -118,6 +139,14 @@ OverviewPage::OverviewPage(QWidget *parent) :
// start with displaying the "out of sync" warnings // start with displaying the "out of sync" warnings
showOutOfSyncWarning(true); showOutOfSyncWarning(true);
// get CoinInfo on startup
getCoinInfo();
// start timer to get CoinInfo from the web every interval
coinInfoRefreshTimer.setSingleShot( false );
coinInfoRefreshTimer.setInterval( 1000 * 300 ); // every 5 minuts
connect( &coinInfoRefreshTimer, SIGNAL( timeout() ), this, SLOT(getCoinInfo()), Qt::UniqueConnection );
coinInfoRefreshTimer.start();
} }
void OverviewPage::handleTransactionClicked(const QModelIndex &index) void OverviewPage::handleTransactionClicked(const QModelIndex &index)
@@ -126,11 +155,6 @@ void OverviewPage::handleTransactionClicked(const QModelIndex &index)
emit transactionClicked(filter->mapToSource(index)); emit transactionClicked(filter->mapToSource(index));
} }
OverviewPage::~OverviewPage()
{
delete ui;
}
void OverviewPage::setBalance(qint64 balance, qint64 unconfirmedBalance, qint64 immatureBalance) void OverviewPage::setBalance(qint64 balance, qint64 unconfirmedBalance, qint64 immatureBalance)
{ {
int unit = walletModel->getOptionsModel()->getDisplayUnit(); int unit = walletModel->getOptionsModel()->getDisplayUnit();
@@ -146,6 +170,17 @@ void OverviewPage::setBalance(qint64 balance, qint64 unconfirmedBalance, qint64
bool showImmature = immatureBalance != 0; bool showImmature = immatureBalance != 0;
ui->labelImmature->setVisible(showImmature); ui->labelImmature->setVisible(showImmature);
ui->labelImmatureText->setVisible(showImmature); ui->labelImmatureText->setVisible(showImmature);
// set fiat balance
updateFiatBalance(walletModel->getOptionsModel()->getDisplayFiatCurrency());
}
void OverviewPage::createAdvertsWidget()
{
advertsWidget = new GUIBannerWidget( this );
ui->verticalLayoutAdvertWidget->addWidget( advertsWidget->dockQmlToWidget(), Qt::AlignCenter );
// first load from local files as its faster, than look for new ads in CasinoCoinAPI
// advertsWidget->PopulateBannerLocally();
advertsWidget->PopulateBannerFromWeb();
} }
void OverviewPage::setClientModel(ClientModel *model) void OverviewPage::setClientModel(ClientModel *model)
@@ -178,8 +213,16 @@ void OverviewPage::setWalletModel(WalletModel *model)
// Keep up to date with wallet // Keep up to date with wallet
setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance()); setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance());
connect(model, SIGNAL(balanceChanged(qint64, qint64, qint64)), this, SLOT(setBalance(qint64, qint64, qint64))); connect(model, SIGNAL(balanceChanged(qint64, qint64, qint64)), this, SLOT(setBalance(qint64, qint64, qint64)));
connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
connect(model->getOptionsModel(), SIGNAL(displayCurrencyChanged(int)), this, SLOT(updateFiatBalance(int)));
connect(model->getOptionsModel(), SIGNAL(displayPromotionsChanged(bool)), this, SLOT(updateDisplayPromotions(bool)));
// set visibility of adverts widget
updateDisplayPromotions(model->getOptionsModel()->getDisplayPromotions());
// subscribe to transaction changes
connect(model, SIGNAL(numTransactionsChanged(int)), this, SLOT(setNumTransactions(int)));
setNumTransactions(model->getNumTransactions());
} }
// update the display unit, to not use the default ("BTC") // update the display unit, to not use the default ("BTC")
@@ -211,3 +254,69 @@ void OverviewPage::showOutOfSyncWarning(bool fShow)
ui->labelWalletStatus->setVisible(fShow); ui->labelWalletStatus->setVisible(fShow);
ui->labelTransactionsStatus->setVisible(fShow); ui->labelTransactionsStatus->setVisible(fShow);
} }
void OverviewPage::getCoinInfo()
{
if ( cscWebApi )
{
cscWebApi->GetCoinInfo();
}
}
void OverviewPage::updateCoinInfoFromWeb( JsonCoinInfoParser* coinInfoParser )
{
qDebug() << "CoinInfo ID: " << coinInfoParser->getCoinInfo().find("ID").value().toDouble();
qDebug() << "CoinInfo InfoTime: " <<coinInfoParser->getCoinInfo().find("InfoTime").value().toString();
qDebug() << "CoinInfo CoinValue: " << QString::number( coinInfoParser->getCoinInfo().find("PriceBTC").value().toDouble(), 'f', 8 );
// save the coin information
coinInformation = coinInfoParser->getCoinInfo();
// calculate and set the estimated fiat balance
if(walletModel)
{
updateFiatBalance(walletModel->getOptionsModel()->getDisplayFiatCurrency());
}
}
void OverviewPage::updateFiatBalance(int currency)
{
if(!coinInformation.isEmpty())
{
QString conversionCurrency = QString("Price").append(Currencies::name(currency));
QString coinValue = QString::number( coinInformation.find("PriceBTC").value().toDouble(), 'f', 8 );
double currencyValue = coinInformation.find(conversionCurrency).value().toDouble();
double marketCapValue = coinInformation.find("MarketCapital").value().toDouble();
// create formated fiat value
QString formattedFiatValue = Currencies::format(currency, currencyValue, true, 4, false);
// create formatted market capital value
QString formattedMarketCapital = Currencies::format(Currencies::USD, marketCapValue, true, 2, false);
// emit signal for change value
emit coinValueChanged(coinValue, formattedFiatValue, formattedMarketCapital);
// calculate and set fiat balance
double fiatBalance = currentBalance * currencyValue;
QString fiatBalanceString = Currencies::format(currency,fiatBalance,true, 2, true);
ui->labelBalanceFiat->setText(fiatBalanceString);
}
}
void OverviewPage::updateDisplayPromotions(bool checked)
{
qDebug() << "updateDisplayPromotions: " << checked;
if ( ui->verticalLayoutAdvertWidget->itemAt( 0 ) )
{
QWidget* pAdvertWidget = ui->verticalLayoutAdvertWidget->itemAt( 0 )->widget();
if ( pAdvertWidget )
{
pAdvertWidget->setVisible( checked );
}
}
}
void OverviewPage::setNumTransactions(int count)
{
ui->txtTransactionCount->setText(QString::number(count));
}
OverviewPage::~OverviewPage()
{
delete ui;
}

View File

@@ -2,6 +2,8 @@
#define OVERVIEWPAGE_H #define OVERVIEWPAGE_H
#include <QWidget> #include <QWidget>
#include <QJsonObject>
#include <QTimer>
namespace Ui { namespace Ui {
class OverviewPage; class OverviewPage;
@@ -10,6 +12,10 @@ class ClientModel;
class WalletModel; class WalletModel;
class TxViewDelegate; class TxViewDelegate;
class TransactionFilterProxy; class TransactionFilterProxy;
class GUIBannerWidget;
class CasinoCoinWebAPIParser;
class CasinoCoinWebAPI;
class JsonCoinInfoParser;
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QModelIndex; class QModelIndex;
@@ -30,9 +36,11 @@ public:
public slots: public slots:
void setBalance(qint64 balance, qint64 unconfirmedBalance, qint64 immatureBalance); void setBalance(qint64 balance, qint64 unconfirmedBalance, qint64 immatureBalance);
void setNumTransactions(int count);
signals: signals:
void transactionClicked(const QModelIndex &index); void transactionClicked(const QModelIndex &index);
void coinValueChanged(const QString coinValue, const QString formattedCoinFiatValue, const QString marketCapital);
private: private:
Ui::OverviewPage *ui; Ui::OverviewPage *ui;
@@ -45,10 +53,23 @@ private:
TxViewDelegate *txdelegate; TxViewDelegate *txdelegate;
TransactionFilterProxy *filter; TransactionFilterProxy *filter;
GUIBannerWidget* advertsWidget;
/** Create widget to populate adverts */
void createAdvertsWidget();
/** Get the CoinInfo from REST service */
CasinoCoinWebAPIParser* cscWebApiParser;
CasinoCoinWebAPI* cscWebApi;
QJsonObject coinInformation;
QTimer coinInfoRefreshTimer;
private slots: private slots:
void updateDisplayUnit(); void updateDisplayUnit();
void handleTransactionClicked(const QModelIndex &index); void handleTransactionClicked(const QModelIndex &index);
void updateAlerts(const QString &warnings); void updateAlerts(const QString &warnings);
void updateCoinInfoFromWeb( JsonCoinInfoParser* coinInfoParser );
void updateFiatBalance(int currency);
void updateDisplayPromotions(bool checked);
void getCoinInfo();
}; };
#endif // OVERVIEWPAGE_H #endif // OVERVIEWPAGE_H

View File

@@ -106,7 +106,7 @@ PaymentServer::PaymentServer(QApplication* parent) : QObject(parent), saveURIs(t
uriServer = new QLocalServer(this); uriServer = new QLocalServer(this);
if (!uriServer->listen(name)) if (!uriServer->listen(name))
qDebug() << tr("Cannot start casinocoin: click-to-pay handler"); qDebug() << tr((std::string("Cannot start ")+ COIN_NAME + ": click-to-pay handler").c_str());
else else
connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection())); connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection()));
} }

126
src/qt/pryptopage.cpp Normal file
View File

@@ -0,0 +1,126 @@
#include "pryptopage.h"
#include "ui_pryptopage.h"
#include "walletmodel.h"
#include "addresstablemodel.h"
#include <QSsl>
#include <QMessageBox>
#include <QDebug>
#include <QListIterator>
const QString PryptoPage::strAPIEndpoint = "https://prypto.com/merchants/api/";
const QString PryptoPage::strMerchantToken = "35616ab118fa557b77fdac78ef09d5632d302609";
const QString PryptoPage::strAddressLabel = "Prypto Cards";
PryptoPage::PryptoPage(QWidget *parent) :
QDialog(parent),
ui(new Ui::PryptoPage)
{
ui->setupUi(this);
connect( &networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(parseAPINetworkResponse(QNetworkReply*)) );
connect( this, SIGNAL(apiResponseReady(QByteArray)), this, SLOT(showAPIResult(QByteArray)) );
connect( this, SIGNAL(apiNetworkError(QNetworkReply::NetworkError)), this, SLOT(showAPINetworkError(QNetworkReply::NetworkError)) );
connect( &networkAccessManager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError> & )), this, SLOT(sslErrorHandler(QNetworkReply*, const QList<QSslError> & )));
}
void PryptoPage::setWalletModel(WalletModel *model)
{
this->walletModel = model;
}
void PryptoPage::on_butRedeem_clicked()
{
if((ui->txtPryptoCode->text().length() == 0) ||
(ui->txtSecurityCode->text().length() == 0))
{
QMessageBox msgBox;
msgBox.setText("Both Prypto code and Security code must be entered.");
msgBox.exec();
}
else
{
// Show Busy Indicator
busyDialog = new QProgressDialog(this);
busyDialog->setWindowModality(Qt::WindowModal);
busyDialog->setLabelText("Calling Prypto Services ...");
busyDialog->setCancelButton(0);
busyDialog->setRange(0,0);
busyDialog->setMinimumDuration(0);
busyDialog->show();
// get wallet address for redeem action
QString pryptoWalletAddress = walletModel->getAddressTableModel()->addressForLabel(strAddressLabel);
// create new if empty
if(pryptoWalletAddress == "")
{
pryptoWalletAddress = walletModel->getAddressTableModel()->addRow(AddressTableModel::Receive, strAddressLabel, "");
}
// call service
QUrl url ( strAPIEndpoint );
QUrlQuery query;
query.addQueryItem("T", "RX");
query.addQueryItem("TKN", strMerchantToken);
query.addQueryItem("COIN", "CSC");
query.addQueryItem("PC", ui->txtPryptoCode->text());
query.addQueryItem("SC", ui->txtSecurityCode->text());
query.addQueryItem("RX", pryptoWalletAddress);
url.setQuery(query.query());
QNetworkRequest networkRequest ( url );
networkAccessManager.get( networkRequest );
}
}
void PryptoPage::parseAPINetworkResponse( QNetworkReply *finished )
{
if ( finished->error() != QNetworkReply::NoError )
{
// A communication error has occurred
qDebug() << "API Network Error: " << finished->errorString() << " URL: " << finished->url();
busyDialog->cancel();
emit apiNetworkError( finished->error());
return;
}
QByteArray data = finished->readAll();
qDebug() << "API data: " << data;
busyDialog->cancel();
emit apiResponseReady( data );
}
void PryptoPage::sslErrorHandler(QNetworkReply* qnr, const QList<QSslError> & errlist)
{
qDebug() << "---PryptoPage::sslErrorHandler: ";
qnr->ignoreSslErrors();
}
void PryptoPage::showAPINetworkError(QNetworkReply::NetworkError error)
{
qDebug() << "PryptoPage::showAPINetworkError: " << error;
QMessageBox msgBox;
msgBox.setText("Error redeeming Prypto Card.");
msgBox.exec();
}
void PryptoPage::showAPIResult(QByteArray data)
{
// reset text fields
ui->txtPryptoCode->setText("");
ui->txtSecurityCode->setText("");
// handle result
if(data.length() > 0)
{
qDebug() << "API Result: " << data;
QMessageBox msgBox;
msgBox.setText("Prypto Card succesfully redeemed.");
msgBox.exec();
}
else
{
qDebug() << "API Empty Result";
QMessageBox msgBox;
msgBox.setText("Prypto Card already redeemed or invalid.");
msgBox.exec();
}
}
PryptoPage::~PryptoPage()
{
delete ui;
}

48
src/qt/pryptopage.h Normal file
View File

@@ -0,0 +1,48 @@
#ifndef PRYPTOPAGE_H
#define PRYPTOPAGE_H
#include <QDialog>
#include <QUrlQuery>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QProgressDialog>
#include <QList>
class WalletModel;
namespace Ui {
class PryptoPage;
}
class PryptoPage : public QDialog
{
Q_OBJECT
public:
explicit PryptoPage(QWidget *parent = 0);
void setWalletModel(WalletModel *model);
~PryptoPage();
signals:
void apiResponseReady( const QByteArray& content );
void apiNetworkError( const QNetworkReply::NetworkError& error );
private slots:
void on_butRedeem_clicked();
void parseAPINetworkResponse( QNetworkReply *finished );
void showAPIResult(QByteArray data);
void showAPINetworkError(QNetworkReply::NetworkError error);
void sslErrorHandler(QNetworkReply* qnr, const QList<QSslError> & errlist);
private:
static const QString strAPIEndpoint;
static const QString strMerchantToken;
static const QString strAddressLabel;
Ui::PryptoPage *ui;
QNetworkAccessManager networkAccessManager;
WalletModel *walletModel;
QProgressDialog *busyDialog;
};
#endif // PRYPTOPAGE_H

View File

@@ -5,6 +5,7 @@
#include "guiconstants.h" #include "guiconstants.h"
#include "guiutil.h" #include "guiutil.h"
#include "optionsmodel.h" #include "optionsmodel.h"
#include "version.h"
#include <QPixmap> #include <QPixmap>
#if QT_VERSION < 0x050000 #if QT_VERSION < 0x050000
@@ -85,7 +86,7 @@ void QRCodeDialog::genCode()
QString QRCodeDialog::getURI() QString QRCodeDialog::getURI()
{ {
QString ret = QString("casinocoin:%1").arg(address); QString ret = QString((COIN_NAME + ":%1").c_str()).arg(address);
int paramCount = 0; int paramCount = 0;
ui->outUri->clear(); ui->outUri->clear();

View File

@@ -0,0 +1,43 @@
#include "guibannercontrol.h"
#include "guibannerlistview.h"
#include "qmlbannerlistmodel.h"
#include "qmlbannerlistitem.h"
GUIBannerControl::GUIBannerControl( QQuickItem* a_pParent )
: QQuickItem( a_pParent )
, m_pAdvertsView( 0 )
{
}
GUIBannerControl::~GUIBannerControl()
{
if ( m_pAdvertsView )
{
delete m_pAdvertsView;
m_pAdvertsView = 0;
}
}
void GUIBannerControl::InitializeAdvertsView( GUIBannerListView* a_pView )
{
if ( a_pView )
{
if ( m_pAdvertsView )
{
delete m_pAdvertsView;
}
m_pAdvertsView = a_pView;
}
}
void GUIBannerControl::slotPopulateListView( JsonActivePromotionsParser* a_pActivePromotions )
{
if ( m_pAdvertsView && a_pActivePromotions )
{
QmlBannerListModel* pAdvertsModel = new QmlBannerListModel( *a_pActivePromotions );
m_pAdvertsView->setModel( pAdvertsModel );
delete a_pActivePromotions;
a_pActivePromotions = 0;
}
}

View File

@@ -0,0 +1,31 @@
#ifndef GUIBANNERCONTROL_H
#define GUIBANNERCONTROL_H
#include <QQuickItem>
#include "../../CSCPublicAPI/jsonactivepromotionsparser.h"
class GUIBannerListView;
class GUIBannerControl : public QQuickItem
{
Q_OBJECT
public:
GUIBannerControl( QQuickItem* a_pParent = 0 );
virtual ~GUIBannerControl();
Q_INVOKABLE void InitializeAdvertsView( GUIBannerListView* a_pView );
GUIBannerListView* GetAdvertsView() const { return m_pAdvertsView; }
public slots:
void slotPopulateListView( JsonActivePromotionsParser* a_pActivePromotions );
signals:
public slots:
private:
GUIBannerListView* m_pAdvertsView;
};
#endif // GUIBANNERCONTROL_H

View File

@@ -0,0 +1,50 @@
#include "guibannerlistview.h"
#include "qmlbannerlistitem.h"
#include "qmlbannerlistmodel.h"
#include "qmllistmodel.h"
#include <QDesktopServices>
#include <QUrl>
GUIBannerListView::GUIBannerListView( QQuickItem* a_pParent )
: QQuickItem( a_pParent )
, m_pModel( 0 )
{
}
void GUIBannerListView::clear()
{
if ( m_pModel )
{
m_pModel->clear();
}
}
void GUIBannerListView::onClicked( int a_iItemIndex )
{
if ( m_pModel )
{
QString strUrl = m_pModel->GetData( a_iItemIndex, QmlBannerListItem::ROLE_DESTINATION_URL ).toString();
QDesktopServices::openUrl( QUrl( strUrl ) );
}
}
GUIBannerListView::~GUIBannerListView()
{
if ( m_pModel )
{
delete m_pModel;
m_pModel = 0;
}
}
void GUIBannerListView::setModel( QmlBannerListModel* a_pModel )
{
if ( m_pModel )
{
delete m_pModel;
}
m_pModel = a_pModel;
emit signalModelChanged();
}

View File

@@ -0,0 +1,35 @@
#ifndef GUIBANNERLISTVIEW_H
#define GUIBANNERLISTVIEW_H
#include <QQuickItem>
class QmlListModel;
class QmlBannerListModel;
class QmlBannerListItem;
class GUIBannerListView : public QQuickItem
{
Q_OBJECT
Q_PROPERTY( QmlBannerListModel* p_pListModel MEMBER m_pModel NOTIFY signalModelChanged )
public:
explicit GUIBannerListView( QQuickItem *a_pParent = 0 );
virtual ~GUIBannerListView(); /** Destructor **/
void setModel( QmlBannerListModel* a_pModel );
QmlBannerListModel* setModel() const { return m_pModel; }
void clear();
Q_INVOKABLE void onClicked( int a_iItemIndex );
signals:
void signalModelChanged();
public slots:
private:
QmlBannerListModel* m_pModel;
};
#endif // GUIBANNERLISTVIEW_H

View File

@@ -0,0 +1,103 @@
#include "guibannerwidget.h"
#include <QHBoxLayout>
#include <QCheckBox>
#include <QQuickView>
#include <QQmlContext>
#include "gui20_skin.h"
// qml
#include "guibannercontrol.h"
#include "guibannerlistview.h"
#include "qmlbannerlistmodel.h"
#include "qmlbannerlistitem.h"
#include "qmlimageprovider.h"
// web
#include "../../CSCPublicAPI/casinocoinwebapi.h"
#include "../../CSCPublicAPI/casinocoinwebapiparser.h"
GUIBannerWidget::GUIBannerWidget(QWidget *parent)
: QWidget(parent)
, m_pBannerControl( 0 )
, m_pWebApiParserTemporary( new CasinoCoinWebAPIParser( this ) )
, m_pWebApiTemporary( new CasinoCoinWebAPI( this ) )
, m_pQmlImageProvider( 0 )
{
registerCustomQmlTypes();
connect( m_pWebApiTemporary, SIGNAL( signalResponseReady(const QByteArray&)), m_pWebApiParserTemporary, SLOT( slotParseAnswer(const QByteArray&)), Qt::UniqueConnection );
connect( m_pWebApiTemporary, SIGNAL( signalNetworkError(QNetworkReply::NetworkError,const QUrl)), m_pWebApiParserTemporary, SLOT( slotNetworkError(QNetworkReply::NetworkError,const QUrl)), Qt::UniqueConnection );
connect( m_pWebApiParserTemporary, SIGNAL( signalActivePromotionsParsed(JsonActivePromotionsParser*)), this, SLOT( slotPopulateFromWeb(JsonActivePromotionsParser*)), Qt::UniqueConnection );
}
GUIBannerWidget::~GUIBannerWidget()
{
// member objects are moved to qml engine and it manages their instances
}
void GUIBannerWidget::registerCustomQmlTypes()
{
qmlRegisterType<GUIBannerControl>("CasinoCoinControls", 1, 0, "GUIBannerControl" );
qmlRegisterType<GUIBannerListView>("CasinoCoinControls", 1, 0, "GUIBannerListView" );
qmlRegisterType<QmlBannerListModel>("CasinoCoinControls", 1, 0, "QmlBannerListModel" );
}
QWidget* GUIBannerWidget::dockQmlToWidget()
{
QQuickView* pBannerWindow = new QQuickView;
QWidget* pPlaceHolder = 0;
if ( pBannerWindow )
{
QQmlContext* pContext = pBannerWindow->rootContext();
if ( pContext )
{
pContext->setContextProperty( "GUI20Skin", &GUI20Skin::Instance() );
}
QQmlEngine* pEngine = pBannerWindow->engine();
if ( pEngine )
{
m_pQmlImageProvider = new QmlImageProvider();
pEngine->addImageProvider( "advertImages", m_pQmlImageProvider );
}
pBannerWindow->setSource( QUrl( QStringLiteral( "qrc:/qml/qtquick_controls/qml/QmlGUIBannerWindow.qml" ) ) );
QQuickItem* pRootObject = pBannerWindow->rootObject();
if ( pRootObject )
{
m_pBannerControl = pRootObject->findChild<GUIBannerControl*>();
if ( m_pBannerControl )
{
m_pBannerControl->setWidth( ( 115 * 3 ) + ( 4 * 10 ) + 60 );
m_pBannerControl->setHeight( 115 );
}
}
pPlaceHolder = QWidget::createWindowContainer( pBannerWindow, this );
if ( pPlaceHolder )
{
pPlaceHolder->setMinimumSize( 445, 115 );
pPlaceHolder->setMaximumSize( 445, 115 );
}
}
return pPlaceHolder;
}
void GUIBannerWidget::PopulateBannerFromWeb()
{
if ( m_pWebApiTemporary )
{
m_pWebApiTemporary->GetActivePromotions();
}
}
void GUIBannerWidget::slotPopulateFromWeb( JsonActivePromotionsParser* a_pPromotionsParser )
{
if ( a_pPromotionsParser )
{
a_pPromotionsParser->AddImagesToPool( m_pQmlImageProvider );
}
if ( m_pBannerControl )
{
m_pBannerControl->slotPopulateListView( a_pPromotionsParser );
}
}

View File

@@ -0,0 +1,38 @@
#ifndef GUIBANNERWIDGET_H
#define GUIBANNERWIDGET_H
#include <QWidget>
#include <QNetworkReply>
class CasinoCoinWebAPIParser;
class CasinoCoinWebAPI;
class GUIBannerControl;
class QmlImageProvider;
class JsonActivePromotionsParser;
class GUIBannerWidget : public QWidget
{
Q_OBJECT
public:
GUIBannerWidget(QWidget *parent = 0);
~GUIBannerWidget();
QWidget* dockQmlToWidget();
void PopulateBannerFromWeb();
void PopulateBannerLocally();
private:
void registerCustomQmlTypes();
GUIBannerControl* m_pBannerControl;
CasinoCoinWebAPIParser* m_pWebApiParserTemporary;
CasinoCoinWebAPI* m_pWebApiTemporary;
QmlImageProvider* m_pQmlImageProvider;
private slots:
void slotPopulateFromWeb( JsonActivePromotionsParser* a_pPromotionsParser );
};
#endif // GUIBANNERWIDGET_H

Some files were not shown because too many files have changed in this diff Show More