diff --git a/CMakeLists.txt b/CMakeLists.txt index 7794f20..f2a3d14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,6 @@ set(SOURCES src/logger.cpp src/okbutton.cpp src/statusbar.cpp - src/tableview.cpp src/windoweditemmodel.cpp src/walletmodel.cpp src/sendframe.cpp @@ -46,7 +45,6 @@ set(SOURCES src/resizablescrollarea.cpp src/common.cpp src/connectionoptionsframe.cpp - src/optionsdialog.cpp src/settings.cpp src/Miner/Miner.cpp src/Miner/StratumClient.cpp @@ -56,7 +54,6 @@ set(SOURCES src/MiningFrame.cpp src/MiningManager.cpp src/PoolHeaderView.cpp - src/QuestionDialog.cpp src/connectselectiondialog.cpp src/walletd.cpp src/rpcapi.cpp @@ -76,6 +73,10 @@ set(SOURCES src/popup.cpp src/logframe.cpp src/askpassworddialog.cpp + src/importkeydialog.cpp + src/questiondialog.cpp + src/PoolTreeView.cpp + ) include_directories(${CMAKE_BINARY_DIR} src ) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/ReleaseNotes.md b/ReleaseNotes.md new file mode 100644 index 0000000..59f673c --- /dev/null +++ b/ReleaseNotes.md @@ -0,0 +1,13 @@ +## Release Notes + +### v.2.0.0-beta-20180219 + +- Added importing keys. +- Fixed stealing focus. +- Fixed mining pools table (deleting and moving). +- Added HTTP basic authentication. +- Made small GUI fixes and stability improvements. + +### v2.0.0-beta-20180206 + +- Project is moved to the new public GitHub repository. diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt deleted file mode 100644 index 07eb1d2..0000000 --- a/ReleaseNotes.txt +++ /dev/null @@ -1,5 +0,0 @@ -Release notes - -v2.0.0-beta-20180206 - -- Project is moved to the new public GitHub repository diff --git a/Windows Installer/Installer.sln b/Windows Installer/Installer.sln index 876d80f..0c11853 100644 --- a/Windows Installer/Installer.sln +++ b/Windows Installer/Installer.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27130.2010 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Installer", "Installer.vdproj", "{301C59C1-45B8-4C42-9696-555FBB855FD6}" +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Bytecoin", "Installer.vdproj", "{301C59C1-45B8-4C42-9696-555FBB855FD6}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Bytecoin(32)", "Installer32.vdproj", "{0E4F4AED-6460-4A0A-A77F-C3E093DF3825}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {301C59C1-45B8-4C42-9696-555FBB855FD6}.Debug|Default.Build.0 = Debug {301C59C1-45B8-4C42-9696-555FBB855FD6}.Release|Default.ActiveCfg = Release {301C59C1-45B8-4C42-9696-555FBB855FD6}.Release|Default.Build.0 = Release + {0E4F4AED-6460-4A0A-A77F-C3E093DF3825}.Debug|Default.ActiveCfg = Debug + {0E4F4AED-6460-4A0A-A77F-C3E093DF3825}.Debug|Default.Build.0 = Debug + {0E4F4AED-6460-4A0A-A77F-C3E093DF3825}.Release|Default.ActiveCfg = Release + {0E4F4AED-6460-4A0A-A77F-C3E093DF3825}.Release|Default.Build.0 = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Windows Installer/Installer.vdproj b/Windows Installer/Installer.vdproj index 9053b24..eff6637 100644 --- a/Windows Installer/Installer.vdproj +++ b/Windows Installer/Installer.vdproj @@ -345,7 +345,7 @@ "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" - "Compression" = "3:2" + "Compression" = "3:3" "SignOutput" = "11:FALSE" "CertificateFile" = "8:" "PrivateKeyFile" = "8:" @@ -390,7 +390,7 @@ { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0203959C71B948929CC2F70BA18158FD" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ja.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ja.qm" "TargetName" = "8:qt_ja.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -410,7 +410,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_08C03B2A62BB43A6A31DA9B700C142CD" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_bg.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_bg.qm" "TargetName" = "8:qt_bg.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -430,7 +430,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0A9F9DE7818243CC9AF6FF9848954234" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_en.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_en.qm" "TargetName" = "8:qt_en.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -450,7 +450,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0AA7B0360D694CADB8A9912880F5C9C5" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\iconengines\\qsvgicon.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\iconengines\\qsvgicon.dll" "TargetName" = "8:qsvgicon.dll" "Tag" = "8:" "Folder" = "8:_D97798E34DCA448BB8DA3C08A746F952" @@ -470,7 +470,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0DA43F67412F414582078021360EF274" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\opengl32sw.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\opengl32sw.dll" "TargetName" = "8:opengl32sw.dll" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -490,7 +490,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0DE48B59DBC94FEC8C96C25CAAAEFAB6" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_pl.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_pl.qm" "TargetName" = "8:qt_pl.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -510,7 +510,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_12A3F30B97CE41F0815A84642A6717CE" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_lv.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_lv.qm" "TargetName" = "8:qt_lv.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -530,7 +530,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_135BB60BCD7D4FA0B115023A3B4BEDDA" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\platforms\\qwindows.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\platforms\\qwindows.dll" "TargetName" = "8:qwindows.dll" "Tag" = "8:" "Folder" = "8:_504C7D1A8F884C06BB98B0FC897AA7A2" @@ -550,7 +550,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1BCAC82F50454F6FA8D4423CD1A5FE08" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qjpeg.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qjpeg.dll" "TargetName" = "8:qjpeg.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -570,7 +570,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_313AB37945054BAEB8EF17B6637DBE77" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\Qt5Svg.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\Qt5Svg.dll" "TargetName" = "8:Qt5Svg.dll" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -610,7 +610,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3E0AFADE5BD540FCA5287616A92F8A3A" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\walletd.exe" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\walletd.exe" "TargetName" = "8:walletd.exe" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -650,7 +650,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_44CED5AA68DB4B55A39C31DCBEA48E3B" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_it.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_it.qm" "TargetName" = "8:qt_it.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -670,7 +670,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_48D4A1E27FBD45C09F1B09BEE3F14DFA" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_he.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_he.qm" "TargetName" = "8:qt_he.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -690,7 +690,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4FDB85C519914B479EA99059664812B9" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_es.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_es.qm" "TargetName" = "8:qt_es.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -710,7 +710,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_519AD3588A78412FB1F6FA3F0345C539" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\styles\\qwindowsvistastyle.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\styles\\qwindowsvistastyle.dll" "TargetName" = "8:qwindowsvistastyle.dll" "Tag" = "8:" "Folder" = "8:_33FFE844C8BD495AA690C73EFF447FC6" @@ -730,7 +730,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_58C0BC1B16E54DDB8E1C86674EB9872D" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qwbmp.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qwbmp.dll" "TargetName" = "8:qwbmp.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -750,7 +750,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5E0362FCFEC84A85A36680A3DCFAA7C4" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\libEGL.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\libEGL.dll" "TargetName" = "8:libEGL.dll" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -810,7 +810,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6E9CB246C9F74BBCA1EC3422E1425E5D" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_fr.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_fr.qm" "TargetName" = "8:qt_fr.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -830,7 +830,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_715B92B7C3F04EFCA6A4BD7538F1AEB7" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\libGLESV2.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\libGLESV2.dll" "TargetName" = "8:libGLESV2.dll" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -850,7 +850,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_75E67CD50F9E40618B5B9E6F81178934" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bearer\\qgenericbearer.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bearer\\qgenericbearer.dll" "TargetName" = "8:qgenericbearer.dll" "Tag" = "8:" "Folder" = "8:_EA323EA245EE499B85F5030B0B43A82A" @@ -870,7 +870,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_775D2937B44142639FC68F643D84110A" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bytecoin-gui.exe" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bytecoin-gui.exe" "TargetName" = "8:bytecoin-gui.exe" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -890,7 +890,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7F4120E589E14325823C59D41CDDD222" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_uk.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_uk.qm" "TargetName" = "8:qt_uk.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -910,7 +910,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_88FE57A6A8354A4E97A7019B72C07FB5" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ru.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ru.qm" "TargetName" = "8:qt_ru.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -930,7 +930,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_902D9E05D49544E48BC784C9EBED1F8B" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qtga.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qtga.dll" "TargetName" = "8:qtga.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -950,7 +950,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_908AD2C2A4B640F59CB51A8D3F5DF23A" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_de.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_de.qm" "TargetName" = "8:qt_de.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -970,7 +970,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_93884783620140F8A8B365EE1B5BF4F4" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_cs.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_cs.qm" "TargetName" = "8:qt_cs.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -990,7 +990,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_95EA28C236124730A9D75133C147DF70" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_hu.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_hu.qm" "TargetName" = "8:qt_hu.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1010,7 +1010,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_960761EF866A42DA82FBB23D42BA1C17" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_fi.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_fi.qm" "TargetName" = "8:qt_fi.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1030,7 +1030,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9726E9734DAF439EAD4CE9A87313AF8E" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qico.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qico.dll" "TargetName" = "8:qico.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1050,7 +1050,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9A4DCFB50F174B449495FB00D1E1DAD7" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bearer\\qnativewifibearer.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\bearer\\qnativewifibearer.dll" "TargetName" = "8:qnativewifibearer.dll" "Tag" = "8:" "Folder" = "8:_EA323EA245EE499B85F5030B0B43A82A" @@ -1070,7 +1070,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9F9F092199BB47A89D76CAA1D1027B6E" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qtiff.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qtiff.dll" "TargetName" = "8:qtiff.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1110,7 +1110,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B146F08012F144E99E9D087255813C95" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qwebp.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qwebp.dll" "TargetName" = "8:qwebp.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1130,7 +1130,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B71851698DCC418DB79B131BFED724F3" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ko.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ko.qm" "TargetName" = "8:qt_ko.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1150,7 +1150,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BE1137420D5A48BFB217A8E35488DD64" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_gd.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_gd.qm" "TargetName" = "8:qt_gd.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1170,7 +1170,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C6CB2B9377E545BC9F927EE42FA0BB1D" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_sk.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_sk.qm" "TargetName" = "8:qt_sk.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1190,7 +1190,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CA2FB00860F84D8F8BC86E8BD6D7F73A" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\d3dcompiler_47.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\d3dcompiler_47.dll" "TargetName" = "8:d3dcompiler_47.dll" "Tag" = "8:" "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" @@ -1210,7 +1210,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D5E855BCEA934554A96B1560ACB3F65D" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qicns.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qicns.dll" "TargetName" = "8:qicns.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1230,7 +1230,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DD5007E49F1F453191894B877B55E55A" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qgif.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qgif.dll" "TargetName" = "8:qgif.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1250,7 +1250,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DF5100E4F45A4E618B94E705BC2009C3" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qsvg.dll" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\imageformats\\qsvg.dll" "TargetName" = "8:qsvg.dll" "Tag" = "8:" "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" @@ -1270,7 +1270,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E18D08080847465797E94E676AE85E12" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_da.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_da.qm" "TargetName" = "8:qt_da.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1290,7 +1290,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F36C8615A39E4E719D968137A1427FA7" { - "SourcePath" = "8:..\\..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ca.qm" + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2017_64bit-Release\\release\\translations\\qt_ca.qm" "TargetName" = "8:qt_ca.qm" "Tag" = "8:" "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" @@ -1483,12 +1483,12 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Bytecoin" - "ProductCode" = "8:{ACD8D8C5-20B0-47A8-8ED1-BB8FB5F76CC3}" + "ProductCode" = "8:{8589E67D-599D-4959-B521-1F10908FA3F5}" "PackageCode" = "8:{97B81D4E-0610-41F0-9D01-CDECD35E90F1}" "UpgradeCode" = "8:{DC5C7D60-BB08-4B97-B634-E87679CCEB3C}" "AspNetVersion" = "8:" "RestartWWWService" = "11:FALSE" - "RemovePreviousVersions" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" "ProductVersion" = "8:2.0.0" @@ -1499,7 +1499,7 @@ "Subject" = "8:" "ARPCONTACT" = "8:Bytecoin Developers" "Keywords" = "8:" - "ARPCOMMENTS" = "8:Beta version of new bytecoin from 06 February 2018" + "ARPCOMMENTS" = "8:Beta version of new bytecoin from 19 February 2018" "ARPURLINFOABOUT" = "8:https://bytecoin.org" "ARPPRODUCTICON" = "8:_ABCF8F071D16461785EDF6D56ED2ABCE" "ARPIconIndex" = "3:0" @@ -1706,7 +1706,7 @@ "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:2" - "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/06. Proceed with caution." + "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/19. Proceed with caution." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } @@ -1945,7 +1945,7 @@ "ContextData" = "8:" "Attributes" = "3:0" "Setting" = "3:2" - "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/06. Proceed with caution." + "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/19. Proceed with caution." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } diff --git a/Windows Installer/Installer32.vdproj b/Windows Installer/Installer32.vdproj new file mode 100644 index 0000000..7b5d11d --- /dev/null +++ b/Windows Installer/Installer32.vdproj @@ -0,0 +1,2050 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:Bytecoin(32)" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_0203959C71B948929CC2F70BA18158FD" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_08C03B2A62BB43A6A31DA9B700C142CD" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_0A9F9DE7818243CC9AF6FF9848954234" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_0AA7B0360D694CADB8A9912880F5C9C5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_0DA43F67412F414582078021360EF274" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_0DE48B59DBC94FEC8C96C25CAAAEFAB6" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_12A3F30B97CE41F0815A84642A6717CE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_135BB60BCD7D4FA0B115023A3B4BEDDA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1BCAC82F50454F6FA8D4423CD1A5FE08" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3E0AFADE5BD540FCA5287616A92F8A3A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_44CED5AA68DB4B55A39C31DCBEA48E3B" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_48D4A1E27FBD45C09F1B09BEE3F14DFA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4FDB85C519914B479EA99059664812B9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_519AD3588A78412FB1F6FA3F0345C539" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_58C0BC1B16E54DDB8E1C86674EB9872D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5E0362FCFEC84A85A36680A3DCFAA7C4" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_6E9CB246C9F74BBCA1EC3422E1425E5D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_715B92B7C3F04EFCA6A4BD7538F1AEB7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_75B1365FF49546AEA9E5353463DC61D5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_75E67CD50F9E40618B5B9E6F81178934" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_775D2937B44142639FC68F643D84110A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7DB6004822064C4AADAC250A24321BF5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7EFCC668F6904FD1B039A285F6757445" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7F4120E589E14325823C59D41CDDD222" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_88FE57A6A8354A4E97A7019B72C07FB5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_902D9E05D49544E48BC784C9EBED1F8B" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_908AD2C2A4B640F59CB51A8D3F5DF23A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_93884783620140F8A8B365EE1B5BF4F4" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_95EA28C236124730A9D75133C147DF70" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_960761EF866A42DA82FBB23D42BA1C17" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9726E9734DAF439EAD4CE9A87313AF8E" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9A4DCFB50F174B449495FB00D1E1DAD7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9F9F092199BB47A89D76CAA1D1027B6E" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_ABCF8F071D16461785EDF6D56ED2ABCE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B146F08012F144E99E9D087255813C95" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B71851698DCC418DB79B131BFED724F3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BE1137420D5A48BFB217A8E35488DD64" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BEF909DD7F7F4A68A8F44192BEEB23B2" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C112ECDC5C69428EA46CA8F0FDC765E0" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C6CB2B9377E545BC9F927EE42FA0BB1D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CA2FB00860F84D8F8BC86E8BD6D7F73A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D5E855BCEA934554A96B1560ACB3F65D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DD5007E49F1F453191894B877B55E55A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DF5100E4F45A4E618B94E705BC2009C3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E18D08080847465797E94E676AE85E12" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F36C8615A39E4E719D968137A1427FA7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F63D3E9D60F746E7B58F2A909EA49724" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F8897CB5C8F549E6AE8935F6EB8EEB22" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\Bytecoin32.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\Bytecoin32.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:3" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0203959C71B948929CC2F70BA18158FD" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_ja.qm" + "TargetName" = "8:qt_ja.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_08C03B2A62BB43A6A31DA9B700C142CD" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_bg.qm" + "TargetName" = "8:qt_bg.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0A9F9DE7818243CC9AF6FF9848954234" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_en.qm" + "TargetName" = "8:qt_en.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0AA7B0360D694CADB8A9912880F5C9C5" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\iconengines\\qsvgicon.dll" + "TargetName" = "8:qsvgicon.dll" + "Tag" = "8:" + "Folder" = "8:_D97798E34DCA448BB8DA3C08A746F952" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0DA43F67412F414582078021360EF274" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\opengl32sw.dll" + "TargetName" = "8:opengl32sw.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0DE48B59DBC94FEC8C96C25CAAAEFAB6" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_pl.qm" + "TargetName" = "8:qt_pl.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_12A3F30B97CE41F0815A84642A6717CE" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_lv.qm" + "TargetName" = "8:qt_lv.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_135BB60BCD7D4FA0B115023A3B4BEDDA" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\platforms\\qwindows.dll" + "TargetName" = "8:qwindows.dll" + "Tag" = "8:" + "Folder" = "8:_504C7D1A8F884C06BB98B0FC897AA7A2" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1BCAC82F50454F6FA8D4423CD1A5FE08" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qjpeg.dll" + "TargetName" = "8:qjpeg.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3E0AFADE5BD540FCA5287616A92F8A3A" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\walletd.exe" + "TargetName" = "8:walletd.exe" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_44CED5AA68DB4B55A39C31DCBEA48E3B" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_it.qm" + "TargetName" = "8:qt_it.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_48D4A1E27FBD45C09F1B09BEE3F14DFA" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_he.qm" + "TargetName" = "8:qt_he.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4FDB85C519914B479EA99059664812B9" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_es.qm" + "TargetName" = "8:qt_es.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_519AD3588A78412FB1F6FA3F0345C539" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\styles\\qwindowsvistastyle.dll" + "TargetName" = "8:qwindowsvistastyle.dll" + "Tag" = "8:" + "Folder" = "8:_33FFE844C8BD495AA690C73EFF447FC6" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_58C0BC1B16E54DDB8E1C86674EB9872D" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qwbmp.dll" + "TargetName" = "8:qwbmp.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5E0362FCFEC84A85A36680A3DCFAA7C4" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\libEGL.dll" + "TargetName" = "8:libEGL.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6E9CB246C9F74BBCA1EC3422E1425E5D" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_fr.qm" + "TargetName" = "8:qt_fr.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_715B92B7C3F04EFCA6A4BD7538F1AEB7" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\libGLESV2.dll" + "TargetName" = "8:libGLESV2.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_75B1365FF49546AEA9E5353463DC61D5" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\Qt5Core.dll" + "TargetName" = "8:Qt5Core.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_75E67CD50F9E40618B5B9E6F81178934" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\bearer\\qgenericbearer.dll" + "TargetName" = "8:qgenericbearer.dll" + "Tag" = "8:" + "Folder" = "8:_EA323EA245EE499B85F5030B0B43A82A" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_775D2937B44142639FC68F643D84110A" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\bytecoin-gui.exe" + "TargetName" = "8:bytecoin-gui.exe" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7EFCC668F6904FD1B039A285F6757445" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\Qt5Gui.dll" + "TargetName" = "8:Qt5Gui.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7F4120E589E14325823C59D41CDDD222" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_uk.qm" + "TargetName" = "8:qt_uk.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_88FE57A6A8354A4E97A7019B72C07FB5" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_ru.qm" + "TargetName" = "8:qt_ru.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_902D9E05D49544E48BC784C9EBED1F8B" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qtga.dll" + "TargetName" = "8:qtga.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_908AD2C2A4B640F59CB51A8D3F5DF23A" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_de.qm" + "TargetName" = "8:qt_de.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_93884783620140F8A8B365EE1B5BF4F4" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_cs.qm" + "TargetName" = "8:qt_cs.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_95EA28C236124730A9D75133C147DF70" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_hu.qm" + "TargetName" = "8:qt_hu.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_960761EF866A42DA82FBB23D42BA1C17" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_fi.qm" + "TargetName" = "8:qt_fi.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9726E9734DAF439EAD4CE9A87313AF8E" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qico.dll" + "TargetName" = "8:qico.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9A4DCFB50F174B449495FB00D1E1DAD7" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\bearer\\qnativewifibearer.dll" + "TargetName" = "8:qnativewifibearer.dll" + "Tag" = "8:" + "Folder" = "8:_EA323EA245EE499B85F5030B0B43A82A" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9F9F092199BB47A89D76CAA1D1027B6E" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qtiff.dll" + "TargetName" = "8:qtiff.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ABCF8F071D16461785EDF6D56ED2ABCE" + { + "SourcePath" = "8:..\\src\\images\\bytecoin.ico" + "TargetName" = "8:bytecoin.ico" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B146F08012F144E99E9D087255813C95" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qwebp.dll" + "TargetName" = "8:qwebp.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B71851698DCC418DB79B131BFED724F3" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_ko.qm" + "TargetName" = "8:qt_ko.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BE1137420D5A48BFB217A8E35488DD64" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_gd.qm" + "TargetName" = "8:qt_gd.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BEF909DD7F7F4A68A8F44192BEEB23B2" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\Qt5Network.dll" + "TargetName" = "8:Qt5Network.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C112ECDC5C69428EA46CA8F0FDC765E0" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\Qt5Svg.dll" + "TargetName" = "8:Qt5Svg.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C6CB2B9377E545BC9F927EE42FA0BB1D" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_sk.qm" + "TargetName" = "8:qt_sk.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CA2FB00860F84D8F8BC86E8BD6D7F73A" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\d3dcompiler_47.dll" + "TargetName" = "8:d3dcompiler_47.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D5E855BCEA934554A96B1560ACB3F65D" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qicns.dll" + "TargetName" = "8:qicns.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DD5007E49F1F453191894B877B55E55A" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qgif.dll" + "TargetName" = "8:qgif.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DF5100E4F45A4E618B94E705BC2009C3" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\imageformats\\qsvg.dll" + "TargetName" = "8:qsvg.dll" + "Tag" = "8:" + "Folder" = "8:_C7F63F2123B94583B0F30CBAB8C44FAC" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E18D08080847465797E94E676AE85E12" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_da.qm" + "TargetName" = "8:qt_da.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F36C8615A39E4E719D968137A1427FA7" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\translations\\qt_ca.qm" + "TargetName" = "8:qt_ca.qm" + "Tag" = "8:" + "Folder" = "8:_CC86214A25E848578B056E8B0C7DF93F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F63D3E9D60F746E7B58F2A909EA49724" + { + "SourcePath" = "8:..\\..\\bytecoin\\bin\\bytecoind.exe" + "TargetName" = "8:bytecoind.exe" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F8897CB5C8F549E6AE8935F6EB8EEB22" + { + "SourcePath" = "8:..\\build-bytecoin-gui-Desktop_Qt_5_10_0_MSVC2015_32bit-Release\\release\\Qt5Widgets.dll" + "TargetName" = "8:Qt5Widgets.dll" + "Tag" = "8:" + "Folder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_0973797F0EF04BC99D8EACDD4B7C6B51" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_FB523710BEF24C0BAD2342CECFDD610B" + { + "Name" = "8:Bytecoin" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_7CA6897CC2204570BAD6B3E019216C78" + "Folders" + { + } + } + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_762A9620D22149E1ABFE76FCE68367A6" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_7C33DDB3295F4859AB1DD1A6E41BF3E3" + { + "Name" = "8:#1915" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:AppDataFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_950739CF6A65416F8DBB9C76E035DA20" + { + "Name" = "8:bytecoin" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_2E72A52970B140DDB9F00AE0E5908B94" + "Folders" + { + } + } + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_BB6FE95E6903428FBAEC9FE62CB0FE39" + { + "DefaultLocation" = "8:[ProgramFilesFolder][ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_33FFE844C8BD495AA690C73EFF447FC6" + { + "Name" = "8:styles" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B17CB599C49B40B2B11DD876DA1B9260" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_504C7D1A8F884C06BB98B0FC897AA7A2" + { + "Name" = "8:platforms" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_0A83900D95FC4DC38EC6601B5E1484ED" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_C7F63F2123B94583B0F30CBAB8C44FAC" + { + "Name" = "8:imageformats" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_9CDF5FBC999C4D6BAABEBA10BA74BDE6" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_CC86214A25E848578B056E8B0C7DF93F" + { + "Name" = "8:translations" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_7027DF4AB17A4E389AC8CDE3792823EB" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_D97798E34DCA448BB8DA3C08A746F952" + { + "Name" = "8:iconengines" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B3E79557EE314641A024E5D0F79F72ED" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_EA323EA245EE499B85F5030B0B43A82A" + { + "Name" = "8:bearer" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_74E4E0988DB8411FB3756EE026C9C79F" + "Folders" + { + } + } + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:Bytecoin" + "ProductCode" = "8:{8589E67D-599D-4959-B521-1F10908FA3F5}" + "PackageCode" = "8:{27B3D69D-6186-4724-84CD-2C5627792B8D}" + "UpgradeCode" = "8:{DC5C7D60-BB08-4B97-B634-E87679CCEB3C}" + "AspNetVersion" = "8:" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:2.0.0" + "Manufacturer" = "8:Bytecoin Developers" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:Bytecoin Beta Installer" + "Subject" = "8:" + "ARPCONTACT" = "8:Bytecoin Developers" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:Beta version of new bytecoin from 19 February 2018" + "ARPURLINFOABOUT" = "8:https://bytecoin.org" + "ARPPRODUCTICON" = "8:_ABCF8F071D16461785EDF6D56ED2ABCE" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_43A1751BD75D4E12AE9B93DA0F36B340" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7211E44FE2434F3DA65627DCD3DFA379" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_DDD3E9CE6AD442A48143FEB5297BCB7E" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_0514F08109174BCA9C57C32568EFBB80" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_22A0659C46CD4E28984022F67B515433" + { + "Name" = "8:Data Folder" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_950739CF6A65416F8DBB9C76E035DA20" + "Folder" = "8:_FB523710BEF24C0BAD2342CECFDD610B" + "WorkingFolder" = "8:_7C33DDB3295F4859AB1DD1A6E41BF3E3" + "Icon" = "8:_ABCF8F071D16461785EDF6D56ED2ABCE" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_99D2372F91FF458A9B6D982EE866F189" + { + "Name" = "8:Wallet (GUI)" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_775D2937B44142639FC68F643D84110A" + "Folder" = "8:_FB523710BEF24C0BAD2342CECFDD610B" + "WorkingFolder" = "8:_BB6FE95E6903428FBAEC9FE62CB0FE39" + "Icon" = "8:_ABCF8F071D16461785EDF6D56ED2ABCE" + "Feature" = "8:" + } + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_265F635E5B674F4B80568487ACFA5F79" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1566A1EB3D974076B8469A8450D8D1EA" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D03EA7EAB88C4179B470752A1B3789F7" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/19. Proceed with caution." + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EE07D03869C04738BFCA6FCF155100CA" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_716833504C8F49848F8AD2C15E1E4E80" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A8E95A525C7642D2A38BE8A159DE037A" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0E95132D7BCF4CF29C255CA46C332AD2" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A90E2305464A41258073ACBF6F30A706" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8E93E158E27E4583B2FB752FAA35F2A5" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A9E725CA648543A892522CBCC6821FA2" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FC11EAEC9BC54C069D471C162F7C7693" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_B804DD8E25AF483CA56E285A6C1DD9B9" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_016279FD87454476BC12F69B9533C3CB" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1A49EA5E8AD34F9AB01F432788B7FEDD" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:WARNING: This is Beta (pre-release) version of new bytecoin core and GUI wallet from 2018/02/19. Proceed with caution." + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2DCCD96FF3FC4B82B9A861064100B45E" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_BD77DD50E584475290D4AD56F217F412" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C96EA7C108534BB0AAC250D680F676B0" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E805CD30DB15487E9B26EBF818B9A6E5" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_7DB6004822064C4AADAC250A24321BF5" + { + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Redist\\MSVC\\14.12.25810\\MergeModules\\Microsoft_VC141_CRT_x86.msm" + "Properties" + { + } + "LanguageId" = "3:0" + "Exclude" = "11:FALSE" + "Folder" = "8:" + "Feature" = "8:" + "IsolateTo" = "8:" + } + } + "ProjectOutput" + { + } + } +} diff --git a/src/BlockExplorerFrame.cpp b/src/BlockExplorerFrame.cpp deleted file mode 100644 index 91f8a7a..0000000 --- a/src/BlockExplorerFrame.cpp +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include -#include -#include - -#ifdef Q_OS_WIN -#include -#endif - -#include "BlockExplorerFrame.h" -#include "Settings/Settings.h" -#include "BlockDetailsDialog.h" -#include "Common/RightAlignmentColumnDelegate.h" -#include "Models/BlockchainModel.h" -#include "Models/TransactionPoolModel.h" -#include "Common/PoolTransactionDetailsDialog.h" -#include "WindowedBlockModel.h" - -#include "ui_BlockExplorerFrame.h" - -namespace WalletGui { - -namespace { - -const quint32 SHOW_FILTER_DURATION = 200; -const quint32 FILTER_FRAME_HEIGHT = 70; - -} - -BlockExplorerFrame::BlockExplorerFrame(QWidget* _parent) : QFrame(_parent), m_ui(new Ui::BlockExplorerFrame), - m_cryptoNoteAdapter(nullptr), m_mainWindow(nullptr), m_blockChainModel(nullptr), m_transactionPoolModel(nullptr), - m_animation(new QPropertyAnimation(this)) { - m_ui->setupUi(this); - m_ui->m_filterFrame->hide(); - m_ui->m_resetFilterButton->hide(); - m_ui->m_filterPeriodFrame->hide(); - - m_animation->setTargetObject(m_ui->m_filterFrame); - m_animation->setPropertyName("maximumHeight"); - m_animation->setDuration(SHOW_FILTER_DURATION); - - QDateTime currentDateTime = QDateTime::currentDateTimeUtc(); - m_ui->m_filterBeginDtedit->setDateTime(currentDateTime.addDays(-1)); - m_ui->m_filterEndDtedit->setDateTime(currentDateTime); - - connect(m_animation, &QPropertyAnimation::finished, this, &BlockExplorerFrame::updateButtonsText); - connect(m_animation, &QPropertyAnimation::finished, this, [this] { - m_ui->m_blockSearchButton->setEnabled(true); - m_ui->m_blockExplorerView->setAutoUpdateRowCount(true); - m_ui->m_blockExplorerView->updateRowCount(); - }); -} - -BlockExplorerFrame::~BlockExplorerFrame() { -} - -void BlockExplorerFrame::setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) { - m_cryptoNoteAdapter = _cryptoNoteAdapter; - m_cryptoNoteAdapter->addObserver(this); -} - -void BlockExplorerFrame::setMainWindow(QWidget* _mainWindow) { - m_mainWindow = _mainWindow; -} - -void BlockExplorerFrame::setBlockChainModel(QAbstractItemModel* _model) { - if (_model == nullptr) { - return; - } - - m_blockChainModel = _model; - WindowedBlockModel* windowedBlocksModel = new WindowedBlockModel(m_cryptoNoteAdapter, m_blockChainModel, this); - m_ui->m_blockExplorerView->setModel(windowedBlocksModel); - m_ui->m_blockExplorerView->setLinkLikeColumnSet(QSet() << BlockchainModel::COLUMN_BLOCK_HEIGHT << BlockchainModel::COLUMN_BLOCK_HASH); - RightAlignmentColumnDelegate* blockExplorerDelegate = new RightAlignmentColumnDelegate(false, this); - m_ui->m_blockExplorerView->setItemDelegateForColumn(BlockchainModel::COLUMN_BLOCK_SIZE, blockExplorerDelegate); - m_ui->m_blockExplorerView->setItemDelegateForColumn(BlockchainModel::COLUMN_BLOCK_TRANSACTION_COUNT, blockExplorerDelegate); - m_ui->m_blockExplorerView->horizontalHeader()->setSectionResizeMode(BlockchainModel::COLUMN_BLOCK_TIME, QHeaderView::Fixed); - m_ui->m_blockExplorerView->horizontalHeader()->setSectionResizeMode(BlockchainModel::COLUMN_BLOCK_HEIGHT, QHeaderView::Fixed); - m_ui->m_blockExplorerView->horizontalHeader()->setSectionResizeMode(BlockchainModel::COLUMN_BLOCK_SIZE, QHeaderView::Fixed); - m_ui->m_blockExplorerView->horizontalHeader()->setSectionResizeMode(BlockchainModel::COLUMN_BLOCK_TRANSACTION_COUNT, QHeaderView::Fixed); - m_ui->m_blockExplorerView->horizontalHeader()->setSectionResizeMode(BlockchainModel::COLUMN_BLOCK_HASH, QHeaderView::Stretch); - m_ui->m_blockExplorerView->horizontalHeader()->resizeSection(BlockchainModel::COLUMN_BLOCK_TIME, 180); - m_ui->m_blockExplorerView->horizontalHeader()->resizeSection(BlockchainModel::COLUMN_BLOCK_HEIGHT, 100); - m_ui->m_blockExplorerView->horizontalHeader()->resizeSection(BlockchainModel::COLUMN_BLOCK_SIZE, 100); - m_ui->m_blockExplorerView->horizontalHeader()->resizeSection(BlockchainModel::COLUMN_BLOCK_TRANSACTION_COUNT, 100); - - qobject_cast(m_ui->m_blockExplorerView)->updateRowCount(); - windowedBlocksModel->lastPage(); - updateButtonsText(); - connect(windowedBlocksModel, &WindowedBlockModel::pageCountUpdated, this, &BlockExplorerFrame::updateButtonsText); -} - -void BlockExplorerFrame::setTransactionPoolModel(QAbstractItemModel* _model) { - if (_model == nullptr) { - return; - } - - m_transactionPoolModel = _model; - m_ui->m_transactionPoolView->setModel(m_transactionPoolModel); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionHidden(TransactionPoolModel::COLUMN_MIXIN, true); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionHidden(TransactionPoolModel::COLUMN_PAYMENT_ID, true); - m_ui->m_transactionPoolView->setLinkLikeColumnSet(QSet() << TransactionPoolModel::COLUMN_HASH); - RightAlignmentColumnDelegate* transactionsPoolDelegate = new RightAlignmentColumnDelegate(false, this); - m_ui->m_transactionPoolView->setItemDelegateForColumn(TransactionPoolModel::COLUMN_AMOUNT, transactionsPoolDelegate); - m_ui->m_transactionPoolView->setItemDelegateForColumn(TransactionPoolModel::COLUMN_FEE, transactionsPoolDelegate); - m_ui->m_transactionPoolView->setItemDelegateForColumn(TransactionPoolModel::COLUMN_SIZE, transactionsPoolDelegate); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionResizeMode(TransactionPoolModel::COLUMN_TIME, QHeaderView::Fixed); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionResizeMode(TransactionPoolModel::COLUMN_AMOUNT, QHeaderView::Fixed); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionResizeMode(TransactionPoolModel::COLUMN_FEE, QHeaderView::Fixed); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionResizeMode(TransactionPoolModel::COLUMN_SIZE, QHeaderView::Fixed); - m_ui->m_transactionPoolView->horizontalHeader()->setSectionResizeMode(TransactionPoolModel::COLUMN_HASH, QHeaderView::Stretch); - - m_ui->m_transactionPoolView->horizontalHeader()->resizeSection(TransactionPoolModel::COLUMN_TIME, 190); - m_ui->m_transactionPoolView->horizontalHeader()->resizeSection(TransactionPoolModel::COLUMN_AMOUNT, 200); - m_ui->m_transactionPoolView->horizontalHeader()->resizeSection(TransactionPoolModel::COLUMN_FEE, 120); - m_ui->m_transactionPoolView->horizontalHeader()->resizeSection(TransactionPoolModel::COLUMN_SIZE, 120); -} - -void BlockExplorerFrame::cryptoNoteAdapterInitCompleted(int _status) { - if (_status == 0) { - qobject_cast(m_ui->m_blockExplorerView)->updateRowCount(); - updateButtonsText(); - } -} - -void BlockExplorerFrame::cryptoNoteAdapterDeinitCompleted() { - // Do nothing -} - -void BlockExplorerFrame::showEvent(QShowEvent* _event) { - lastPage(); - QFrame::showEvent(_event); -} - -void BlockExplorerFrame::resizeEvent(QResizeEvent* _event) { - if (_event->oldSize().height() != _event->size().height()) { - updateButtonsText(); - } - - QFrame::resizeEvent(_event); -} - -void BlockExplorerFrame::nextPage() { - m_ui->m_nextPageButton->setEnabled(false); - setCursor(Qt::WaitCursor); - static_cast(m_ui->m_blockExplorerView->model())->nextPage(); - m_ui->m_nextPageButton->setEnabled(true); - unsetCursor(); - updateButtonsText(); -} - -void BlockExplorerFrame::prevPage() { - m_ui->m_prevPageButton->setEnabled(false); - setCursor(Qt::WaitCursor); - static_cast(m_ui->m_blockExplorerView->model())->prevPage(); - m_ui->m_prevPageButton->setEnabled(true); - unsetCursor(); - updateButtonsText(); -} - -void BlockExplorerFrame::lastPage() { - setCursor(Qt::WaitCursor); - static_cast(m_ui->m_blockExplorerView->model())->lastPage(); - unsetCursor(); - updateButtonsText(); -} - -void BlockExplorerFrame::showBlockDetails(const QModelIndex& _index) { - if(!_index.isValid()) { - return; - } - - QModelIndex filteredIndex = static_cast(m_ui->m_blockExplorerView->model())->mapToSource(_index); - QModelIndex blockIndex = static_cast( - static_cast(m_ui->m_blockExplorerView->model())->sourceModel())->mapToSource(filteredIndex); - BlockDetailsDialog dlg(m_blockChainModel, blockIndex, m_mainWindow); - dlg.exec(); -} - -void BlockExplorerFrame::showTransactionDetails(const QModelIndex& _index) { - PoolTransactionDetailsDialog dlg(m_transactionPoolModel, _index, m_mainWindow); - dlg.exec(); -} - -void BlockExplorerFrame::showSearch(bool _on) { - m_ui->m_blockSearchButton->setText(_on ? tr("Hide search") : tr("Show search")); - m_ui->m_blockSearchButton->setEnabled(false); - m_animation->setStartValue(_on ? 0 : FILTER_FRAME_HEIGHT); - m_animation->setEndValue(_on ? FILTER_FRAME_HEIGHT : 0); - if(_on) { - m_ui->m_filterFrame->setMaximumHeight(0); - m_ui->m_filterFrame->show(); - disconnect(m_animation, &QPropertyAnimation::finished, m_ui->m_filterFrame, &QFrame::hide); - } else { - resetFilter(); - connect(m_animation, &QPropertyAnimation::finished, m_ui->m_filterFrame, &QFrame::hide); - connect(m_animation, &QPropertyAnimation::finished, this, static_cast(&BlockExplorerFrame::update)); - } - - m_ui->m_blockExplorerView->setAutoUpdateRowCount(false); - m_animation->start(); - m_ui->m_resetFilterButton->setVisible(_on); -} - -void BlockExplorerFrame::applyFilter() { - m_ui->m_applyFilterButton->setEnabled(false); - setCursor(Qt::WaitCursor); - QDateTime begin = m_ui->m_filterBeginDtedit->dateTime(); - QDateTime end = m_ui->m_filterEndDtedit->dateTime(); - QString hash = m_ui->m_filterHashEdit->text().trimmed(); - static_cast( - m_ui->m_blockExplorerView->model())->setFilter(static_cast(m_ui->m_filterCombo->currentIndex()), - m_ui->m_filterCombo->currentIndex() == FilteredBlockModel::Custom, begin, end, hash); - lastPage(); - unsetCursor(); - m_ui->m_applyFilterButton->setEnabled(true); -} - -void BlockExplorerFrame::resetFilterClicked() { - resetFilter(); -} - -void BlockExplorerFrame::resetFilter() { - QDateTime currentDateTime = QDateTime::currentDateTimeUtc(); - m_ui->m_filterCombo->setCurrentIndex(FilteredBlockModel::All); - m_ui->m_filterBeginDtedit->setDateTime(currentDateTime); - m_ui->m_filterEndDtedit->setDateTime(currentDateTime); - m_ui->m_filterHashEdit->clear(); - static_cast(m_ui->m_blockExplorerView->model())->resetFilter(); - lastPage(); -} - -void BlockExplorerFrame::filterChanged(int _index) { - m_ui->m_filterPeriodFrame->setVisible(_index == FilteredBlockModel::Custom); -} - -void BlockExplorerFrame::updateButtonsText() { - QPair prevInterval = static_cast(m_ui->m_blockExplorerView->model())->prevPageInterval(); - QPair nextInterval = static_cast(m_ui->m_blockExplorerView->model())->nextPageInterval(); - - if(prevInterval.first == std::numeric_limits::max()) { - m_ui->m_prevPageButton->hide(); - } else { - m_ui->m_prevPageButton->show(); - m_ui->m_prevPageButton->setText(QString("< %1 - %2").arg(prevInterval.first).arg(prevInterval.second)); - } - - if(nextInterval.first == std::numeric_limits::max()) { - m_ui->m_nextPageButton->hide(); - m_ui->m_topButton->hide(); - } else { - m_ui->m_nextPageButton->show(); - m_ui->m_topButton->show(); - m_ui->m_nextPageButton->setText(QString("%1 - %2 >").arg(nextInterval.first).arg(nextInterval.second)); - } -} - -} diff --git a/src/BlockExplorerFrame.h b/src/BlockExplorerFrame.h deleted file mode 100644 index edf82a3..0000000 --- a/src/BlockExplorerFrame.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#if 0 - -#pragma once - -#include -#include - -#include "Application/IWalletUiItem.h" -#include "ICryptoNoteAdapter.h" - -class QPropertyAnimation; - -namespace Ui { -class BlockExplorerFrame; -} - -namespace WalletGui { - -class BlockExplorerFrame : public QFrame, public IWalletUiItem, public ICryptoNoteAdapterObserver { - Q_OBJECT - Q_DISABLE_COPY(BlockExplorerFrame) - -public: - explicit BlockExplorerFrame(QWidget* _parent); - ~BlockExplorerFrame(); - - // IWalletUiItem - virtual void setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) override; - virtual void setMainWindow(QWidget* _mainWindow) override; - virtual void setBlockChainModel(QAbstractItemModel* _model) override; - virtual void setTransactionPoolModel(QAbstractItemModel* _model) override; - - // ICryptoNoteAdapterObserver - Q_SLOT virtual void cryptoNoteAdapterInitCompleted(int _status) override; - Q_SLOT virtual void cryptoNoteAdapterDeinitCompleted() override; - -protected: - virtual void showEvent(QShowEvent* _event) override; - virtual void resizeEvent(QResizeEvent* _event) override; - -private: - QScopedPointer m_ui; - ICryptoNoteAdapter* m_cryptoNoteAdapter; - QWidget* m_mainWindow; - QAbstractItemModel* m_blockChainModel; - QAbstractItemModel* m_transactionPoolModel; - QPropertyAnimation* m_animation; - - void updateButtonsText(); - void resetFilter(); - - Q_SLOT void nextPage(); - Q_SLOT void prevPage(); - Q_SLOT void lastPage(); - Q_SLOT void showBlockDetails(const QModelIndex &_index); - Q_SLOT void showTransactionDetails(const QModelIndex &_index); - Q_SLOT void showSearch(bool _on); - Q_SLOT void applyFilter(); - Q_SLOT void resetFilterClicked(); - Q_SLOT void filterChanged(int _index); -}; - -} - -#endif diff --git a/src/BlockExplorerFrame.ui b/src/BlockExplorerFrame.ui deleted file mode 100644 index 7518147..0000000 --- a/src/BlockExplorerFrame.ui +++ /dev/null @@ -1,737 +0,0 @@ - - - BlockExplorerFrame - - - - 0 - 0 - 950 - 627 - - - - Frame - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 12 - - - 0 - - - 0 - - - - - 0 - - - - Blockchain - - - - 0 - - - 25 - - - 15 - - - 25 - - - 12 - - - - - 10 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PointingHandCursor - - - Reset - - - true - - - - - - - PointingHandCursor - - - Show search - - - true - - - true - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 7 - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 5 - - - 0 - - - 30 - - - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 25 - - - 0 - - - - - PERIOD - - - - - - - Qt::NoFocus - - - - All time - - - - - Last hour - - - - - Last day - - - - - Last week - - - - - Last month - - - - - Last year - - - - - Custom - - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 25 - - - 0 - - - - - FROM - - - - - - - true - - - - - - dd MMM yyyy, hh:mm - - - true - - - Qt::UTC - - - - - - - TO - - - - - - - true - - - - - - dd MMM yyyy, hh:mm - - - true - - - Qt::UTC - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 10 - - - 0 - - - - - HASH / HEIGHT - - - - - - - - - - - - - Apply - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 7 - - - - - - - - Qt::NoFocus - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOff - - - true - - - QAbstractItemView::NoSelection - - - QAbstractItemView::SelectItems - - - Qt::ElideMiddle - - - false - - - false - - - false - - - false - - - false - - - - - - - 10 - - - 0 - - - 5 - - - 0 - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 30 - - - - - - - - - - - - - - - Back to Top - - - - - - - - - - Transaction pool - - - - 0 - - - 25 - - - 23 - - - 25 - - - 12 - - - - - Qt::NoFocus - - - QFrame::NoFrame - - - QAbstractItemView::NoSelection - - - QAbstractItemView::ScrollPerPixel - - - false - - - false - - - false - - - false - - - false - - - - - - - - - - - - WalletGui::WalletTinyLinkLikeButton - QPushButton -
Gui/Common/WalletLinkLikeButton.h
-
- - WalletGui::WalletOkButton - QPushButton -
Gui/Common/WalletOkButton.h
-
- - WalletGui::WalletNormalGrayTextLabel - QLabel -
Gui/Common/WalletTextLabel.h
-
- - WalletGui::WalletTableView - QTableView -
Gui/Common/WalletTableView.h
-
- - WalletGui::WalletNavigationButton - QPushButton -
Gui/Common/WalletNavigationButton.h
-
-
- - - - m_nextPageButton - clicked() - BlockExplorerFrame - nextPage() - - - 726 - 591 - - - 384 - 310 - - - - - m_prevPageButton - clicked() - BlockExplorerFrame - prevPage() - - - 44 - 591 - - - 384 - 310 - - - - - m_blockSearchButton - toggled(bool) - BlockExplorerFrame - showSearch(bool) - - - 712 - 39 - - - 384 - 310 - - - - - m_applyFilterButton - clicked() - BlockExplorerFrame - applyFilter() - - - 814 - 212 - - - 473 - 313 - - - - - m_resetFilterButton - clicked() - BlockExplorerFrame - resetFilterClicked() - - - 894 - 212 - - - 473 - 313 - - - - - m_filterCombo - currentIndexChanged(int) - BlockExplorerFrame - filterChanged(int) - - - 144 - 75 - - - 473 - 313 - - - - - m_topButton - clicked() - BlockExplorerFrame - lastPage() - - - 862 - 597 - - - 473 - 313 - - - - - m_filterHashEdit - returnPressed() - m_applyFilterButton - click() - - - 813 - 77 - - - 877 - 79 - - - - - m_blockExplorerView - doubleClicked(QModelIndex) - BlockExplorerFrame - showBlockDetails(QModelIndex) - - - 474 - 368 - - - 474 - 313 - - - - - m_transactionPoolView - doubleClicked(QModelIndex) - BlockExplorerFrame - showTransactionDetails(QModelIndex) - - - 474 - 333 - - - 474 - 313 - - - - - - nextPage() - prevPage() - firstPage() - lastPage() - showBlockDetails(QModelIndex) - showSearch(bool) - applyFilter() - resetFilterClicked() - filterChanged(int) - showTransactionDetails(QModelIndex) - -
diff --git a/src/CopyMagicLabel.cpp b/src/CopyMagicLabel.cpp deleted file mode 100644 index a803c2b..0000000 --- a/src/CopyMagicLabel.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include "CopyMagicLabel.h" -#include "Settings/Settings.h" -#include "Style/Style.h" - -namespace WalletGui { - -namespace { - -const char COPY_MAGIC_LABEL_STYLE_SHEET_TEMPLATE[] = - "* {" - "font-family: %fontFamily%;" - "}" - - "WalletGui--CopyMagicLabel {" - "color: %fontColorGreen%;" - "font-size: %fontSizeSmall%;" - "}"; - -} - -CopyMagicLabel::CopyMagicLabel(QWidget* _parent) : MagicLabel(_parent) { - setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(COPY_MAGIC_LABEL_STYLE_SHEET_TEMPLATE)); -} - -CopyMagicLabel::~CopyMagicLabel() { -} - -} diff --git a/src/CopyMagicLabel.h b/src/CopyMagicLabel.h deleted file mode 100644 index 459b211..0000000 --- a/src/CopyMagicLabel.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#if 0 - -#pragma once - -#include "MagicLabel.h" - -namespace WalletGui { - -class CopyMagicLabel : public MagicLabel { - Q_OBJECT - Q_DISABLE_COPY(CopyMagicLabel) - -public: - explicit CopyMagicLabel(QWidget* _parent); - ~CopyMagicLabel(); -}; - -} - -#endif diff --git a/src/JsonRpc/JsonRpcClient.cpp b/src/JsonRpc/JsonRpcClient.cpp index 39b0e84..5aff2b8 100644 --- a/src/JsonRpc/JsonRpcClient.cpp +++ b/src/JsonRpc/JsonRpcClient.cpp @@ -1,3 +1,5 @@ +#include + #include "JsonRpcClient.h" #include "common.h" #include "rpcapi.h" @@ -57,6 +59,7 @@ Client::Client(QObject* parent) , idCount_(0) { connect(httpClient_, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); + connect(httpClient_, &QNetworkAccessManager::authenticationRequired, this, &Client::authenticationRequired); } void Client::setUrl(const QString& endPoint) @@ -177,6 +180,11 @@ void Client::replyFinished(QNetworkReply* reply) } } +void Client::authenticationRequired(QNetworkReply* /*reply*/, QAuthenticator* authenticator) +{ + emit authRequiredSignal(authenticator); +} + void Client::sendJson(const QByteArray& json) { // Q_ASSERT(!url_.isEmpty()); diff --git a/src/JsonRpc/JsonRpcClient.h b/src/JsonRpc/JsonRpcClient.h index 5066524..84450bd 100644 --- a/src/JsonRpc/JsonRpcClient.h +++ b/src/JsonRpc/JsonRpcClient.h @@ -37,6 +37,7 @@ class Client : public QObject private slots: void replyFinished(QNetworkReply* reply); + void authenticationRequired(QNetworkReply* reply, QAuthenticator* authenticator); signals: // void error(const QString& msg, const QString& desc) const; @@ -47,6 +48,7 @@ private slots: void packetSent(const QByteArray& data); void packetReceived(const QByteArray& data); + void authRequiredSignal(QAuthenticator* authenticator); protected: // template diff --git a/src/MinerDelegate.cpp b/src/MinerDelegate.cpp index 0db59a3..eaa237b 100644 --- a/src/MinerDelegate.cpp +++ b/src/MinerDelegate.cpp @@ -18,7 +18,6 @@ #include #include "MinerDelegate.h" -//#include "Style/Style.h" #include "MinerModel.h" namespace WalletGUI { diff --git a/src/MinerModel.cpp b/src/MinerModel.cpp index 123476a..0e4c8cf 100644 --- a/src/MinerModel.cpp +++ b/src/MinerModel.cpp @@ -28,7 +28,6 @@ #include "settings.h" #include "IMiningManager.h" #include "IPoolMiner.h" -//#include "Style/Style.h" namespace WalletGUI { @@ -107,8 +106,7 @@ Qt::ItemFlags MinerModel::flags(const QModelIndex& _index) const { if (!_index.isValid()) { return 0; } - - Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemNeverHasChildren | Qt::ItemIsDropEnabled; + Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemNeverHasChildren /*| Qt::ItemIsDropEnabled*/; if (_index.column() != COLUMN_REMOVE) { flags |= Qt::ItemIsSelectable | Qt::ItemIsDragEnabled; } @@ -132,8 +130,6 @@ QVariant MinerModel::headerData(int _section, Qt::Orientation _orientation, int return tr("Good shares"); case COLUMN_BAD_SHARES: return tr("Bad shares"); - case COLUMN_DONATED_SHARES: - return tr("Donated shares"); case COLUMN_CONNECTION_ERROR_COUNT: return tr("Connection error"); case COLUMN_LAST_CONNECTION_ERROR_TIME: @@ -260,9 +256,9 @@ void MinerModel::hashRateChanged(quintptr _minerIndex, quint32 /*_hashRate*/) { Q_EMIT dataChanged(minerIndex, minerIndex); } -void MinerModel::alternateHashRateChanged(quintptr _minerIndex, quint32 /*_hashRate*/) { - QModelIndex minerIndex = index(_minerIndex, COLUMN_DONATION_HASHRATE); - Q_EMIT dataChanged(minerIndex, minerIndex); +void MinerModel::alternateHashRateChanged(quintptr /*_minerIndex*/, quint32 /*_hashRate*/) { +// QModelIndex minerIndex = index(_minerIndex, COLUMN_DONATION_HASHRATE); +// Q_EMIT dataChanged(minerIndex, minerIndex); } void MinerModel::difficultyChanged(quintptr _minerIndex, quint32 /*_difficulty*/) { @@ -280,9 +276,9 @@ void MinerModel::badShareCountChanged(quintptr _minerIndex, quint32 /*_badShareC Q_EMIT dataChanged(minerIndex, minerIndex); } -void MinerModel::goodAlternateShareCountChanged(quintptr _minerIndex, quint32 /*_goodShareCount*/) { - QModelIndex minerIndex = index(_minerIndex, COLUMN_DONATED_SHARES); - Q_EMIT dataChanged(minerIndex, minerIndex); +void MinerModel::goodAlternateShareCountChanged(quintptr /*_minerIndex*/, quint32 /*_goodShareCount*/) { +// QModelIndex minerIndex = index(_minerIndex, COLUMN_DONATED_SHARES); +// Q_EMIT dataChanged(minerIndex, minerIndex); } void MinerModel::connectionErrorCountChanged(quintptr _minerIndex, quint32 /*_connectionErrorCount*/) { @@ -343,8 +339,6 @@ QVariant MinerModel::getDislayRole(const QModelIndex& _index) const { return _index.data(ROLE_GOOD_SHARES); case COLUMN_BAD_SHARES: return _index.data(ROLE_BAD_SHARES); - case COLUMN_DONATED_SHARES: - return _index.data(ROLE_DONATED_SHARES); case COLUMN_CONNECTION_ERROR_COUNT: return _index.data(ROLE_CONNECTION_ERROR_COUNT); case COLUMN_LAST_CONNECTION_ERROR_TIME: { @@ -364,10 +358,6 @@ QVariant MinerModel::getDislayRole(const QModelIndex& _index) const { return tr("%1 H/s").arg(hashrate); } - case COLUMN_DONATION_HASHRATE: { - quint32 hashrate = _index.data(ROLE_DONATION_HASHRATE).toUInt(); - return tr("%1 H/s").arg(hashrate); - } } return QVariant(); @@ -386,8 +376,6 @@ QVariant MinerModel::getUserRoles(const QModelIndex& _index, int _role) const { return miner->getGoodShareCount(); case ROLE_BAD_SHARES: return miner->getBadShareCount(); - case ROLE_DONATED_SHARES: - return miner->getGoodAlternateShareCount(); case ROLE_CONNECTION_ERROR_COUNT: return miner->getConnectionErrorCount(); case ROLE_LAST_CONNECTION_ERROR_TIME: @@ -396,8 +384,6 @@ QVariant MinerModel::getUserRoles(const QModelIndex& _index, int _role) const { return miner->getCurrentState(); case ROLE_HASHRATE: return miner->getHashRate(); - case ROLE_DONATION_HASHRATE: - return miner->getAlternateHashRate(); } return QVariant(); diff --git a/src/MinerModel.h b/src/MinerModel.h index e4821eb..80dcae0 100644 --- a/src/MinerModel.h +++ b/src/MinerModel.h @@ -19,9 +19,6 @@ #include -//#include "ICryptoNoteAdapter.h" -//#include "IDonationManager.h" -//#include "IWalletAdapter.h" #include "IMiningManager.h" namespace WalletGUI { @@ -34,15 +31,13 @@ class MinerModel : public QAbstractItemModel, public IMinerManagerObserver { public: enum Columns { - COLUMN_POOL_URL = 0, COLUMN_DIFFICULTY, COLUMN_GOOD_SHARES, COLUMN_BAD_SHARES, COLUMN_DONATED_SHARES, + COLUMN_POOL_URL = 0, COLUMN_DIFFICULTY, COLUMN_GOOD_SHARES, COLUMN_BAD_SHARES, COLUMN_CONNECTION_ERROR_COUNT, COLUMN_LAST_CONNECTION_ERROR_TIME, COLUMN_REMOVE, COLUMN_HASHRATE, - COLUMN_DONATION_HASHRATE }; enum Roles { - ROLE_POOL_HOST = Qt::UserRole, ROLE_POOL_PORT, ROLE_DIFFICULTY, ROLE_GOOD_SHARES, ROLE_BAD_SHARES, ROLE_DONATED_SHARES, + ROLE_POOL_HOST = Qt::UserRole, ROLE_POOL_PORT, ROLE_DIFFICULTY, ROLE_GOOD_SHARES, ROLE_BAD_SHARES, ROLE_CONNECTION_ERROR_COUNT, ROLE_LAST_CONNECTION_ERROR_TIME, ROLE_STATE, ROLE_START_MINER, ROLE_HASHRATE, - ROLE_DONATION_HASHRATE }; MinerModel(IMiningManager* _minerManager, QObject* _parent); diff --git a/src/MiningFrame.cpp b/src/MiningFrame.cpp index 8e0159d..5ab0dcc 100644 --- a/src/MiningFrame.cpp +++ b/src/MiningFrame.cpp @@ -24,16 +24,12 @@ #include "MiningFrame.h" #include "settings.h" -//#include "ApplicationEventHandler.h" -#include "QuestionDialog.h" -//#include "Common/RightAlignmentColumnDelegate.h" +#include "questiondialog.h" #include "IMiningManager.h" #include "IPoolMiner.h" #include "MinerDelegate.h" -//#include "Models/AddressBookModel.h" #include "MinerModel.h" #include "PoolHeaderView.h" -//#include "Style/Style.h" #include "ui_MiningFrame.h" @@ -81,18 +77,15 @@ bool isIpOrHostName(const QString& _string) { MiningFrame::MiningFrame(QWidget* _parent) : QFrame(_parent) , m_ui(new Ui::MiningFrame) -// , m_cryptoNoteAdapter(nullptr) , m_miningManager(nullptr) -// , m_donationManager(nullptr) , m_minerModel(nullptr) , m_dataMapper(new QDataWidgetMapper(this)) , m_restorePoolListButton(new /*WalletLargeBlueButton*/QPushButton(this)) { m_ui->setupUi(this); m_ui->m_hashRateFrame->hide(); -// m_ui->m_lockedScreenMiningCheck->hide(); m_ui->m_poolView->setHorizontalHeader(new /*PoolHeaderView*/QHeaderView(Qt::Horizontal, this)); - m_ui->m_poolView->setAcceptDrops(true); +// m_ui->m_poolView->setAcceptDrops(true); m_restorePoolListButton->setFixedWidth(200); m_restorePoolListButton->setText(tr("Restore default pool list")); @@ -106,19 +99,6 @@ MiningFrame::MiningFrame(QWidget* _parent) MiningFrame::~MiningFrame() { } -//void MiningFrame::setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) { -// m_cryptoNoteAdapter = _cryptoNoteAdapter; -//} - -//void MiningFrame::setApplicationEventHandler(IApplicationEventHandler* _applicationEventHandler) { -// _applicationEventHandler->addObserver(this); -//} - -//void MiningFrame::setDonationManager(IDonationManager* _donationManager) { -// m_donationManager = _donationManager; -// m_donationManager->addObserver(this); -//} - void MiningFrame::setMiningManager(IMiningManager* _miningManager) { m_miningManager = _miningManager; initCpuCoresCombo(); @@ -142,26 +122,22 @@ void MiningFrame::setMinerModel(QAbstractItemModel* _model) { m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_DIFFICULTY, delegate); m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_GOOD_SHARES, delegate); m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_BAD_SHARES, delegate); - m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_DONATED_SHARES, delegate); m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_CONNECTION_ERROR_COUNT, delegate); m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_LAST_CONNECTION_ERROR_TIME, delegate); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_POOL_URL, QHeaderView::Stretch); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_DIFFICULTY, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_GOOD_SHARES, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_BAD_SHARES, QHeaderView::Fixed); - m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_DONATED_SHARES, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_CONNECTION_ERROR_COUNT, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_LAST_CONNECTION_ERROR_TIME, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->setSectionResizeMode(MinerModel::COLUMN_REMOVE, QHeaderView::Fixed); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_DIFFICULTY, 90); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_GOOD_SHARES, 120); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_BAD_SHARES, 120); - m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_DONATED_SHARES, 130); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_CONNECTION_ERROR_COUNT, 160); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_LAST_CONNECTION_ERROR_TIME, 160); m_ui->m_poolView->horizontalHeader()->resizeSection(MinerModel::COLUMN_REMOVE, 60); m_ui->m_poolView->horizontalHeader()->hideSection(MinerModel::COLUMN_HASHRATE); - m_ui->m_poolView->horizontalHeader()->hideSection(MinerModel::COLUMN_DONATION_HASHRATE); // m_ui->m_poolView->setLinkLikeColumnSet(QSet() << MinerModel::COLUMN_REMOVE); m_ui->m_poolView->setItemDelegateForColumn(MinerModel::COLUMN_REMOVE, new MinerRemoveDelegate(m_ui->m_poolView, this)); @@ -171,48 +147,6 @@ void MiningFrame::setMinerModel(QAbstractItemModel* _model) { connect(m_minerModel, &MinerModel::rowsRemoved, this, &MiningFrame::showRestoreButton); } -//void MiningFrame::donationManagerOpened() { -// donationMiningEnabled(m_donationManager->isDonationMiningEnabled()); -//} - -//void MiningFrame::donationManagerClosed() { -// if (m_ui->m_startMiningButton->isChecked()) { -// m_ui->m_startMiningButton->click(); -// } -//} - -//void MiningFrame::donationMiningEnabled(bool _on) { -// if (_on) { -// m_ui->m_poolView->header()->showSection(MinerModel::COLUMN_DONATED_SHARES); -// m_ui->m_donationHashRateTextLabel->show(); -// m_ui->m_donationHashRateLabel->show(); -// } else { -// m_ui->m_poolView->header()->hideSection(MinerModel::COLUMN_DONATED_SHARES); -// m_ui->m_donationHashRateTextLabel->hide(); -// m_ui->m_donationHashRateLabel->hide(); -// } -//} - -//void MiningFrame::donationMiningAddressChanged(const QString& _address) { -// // Do nothing -//} - -//void MiningFrame::donationMiningAmountChanged(int _amount) { -// // Do nothing -//} - -//void MiningFrame::donationChangeEnabled(bool _on) { -// // Do nothing -//} - -//void MiningFrame::donationChangeAddressChanged(const QString& _address) { -// // Do nothing -//} - -//void MiningFrame::donationChangeAmountChanged(int _amount) { -// // Do nothing -//} - void MiningFrame::minersLoaded() { if (m_miningManager->getMinerCount() == 0) { showRestoreButton(); @@ -311,22 +245,6 @@ void MiningFrame::lastConnectionErrorTimeChanged(quintptr /*_minerIndex*/, const // Do nothing } -//void MiningFrame::urlReceived(const QUrl& _url) { -// // Do nothing -//} - -//void MiningFrame::screenLocked() { -// if (m_ui->m_lockedScreenMiningCheck->isChecked() && !m_ui->m_startMiningButton->isChecked()) { -// m_ui->m_startMiningButton->click(); -// } -//} - -//void MiningFrame::screenUnlocked() { -// if (m_ui->m_lockedScreenMiningCheck->isChecked() && m_ui->m_startMiningButton->isChecked()) { -// m_ui->m_startMiningButton->click(); -// } -//} - void MiningFrame::resizeEvent(QResizeEvent* _event) { QFrame::resizeEvent(_event); if (m_restorePoolListButton->isVisible()) { @@ -398,10 +316,6 @@ void MiningFrame::deleteClicked(const QModelIndex& _index) { } } -//void MiningFrame::miningOnLockedScreenChecked(bool _enabled) { -// Settings::instance().setMiningOnLockedScreenEnabled(_enabled); -//} - void MiningFrame::newPoolUrlChanged() { m_ui->m_addPoolButton->setEnabled(isIpOrHostName(m_ui->m_newPoolHostEdit->text().trimmed())); } diff --git a/src/MiningFrame.h b/src/MiningFrame.h index 238ebfc..7c3f8fb 100644 --- a/src/MiningFrame.h +++ b/src/MiningFrame.h @@ -19,9 +19,6 @@ #include -//#include "Application/IWalletUiItem.h" -//#include "IApplicationEventHandler.h" -//#include "IDonationManager.h" #include "IMiningManager.h" class QPushButton; @@ -38,8 +35,8 @@ namespace WalletGUI { class IApplicationEventHandler; class WalletLargeBlueButton; -class MiningFrame : public QFrame, /*public IWalletUiItem, public IDonationManagerObserver,*/ public IMinerManagerObserver/*, - public IApplicationEventHandlerObserver*/ { +class MiningFrame : public QFrame, public IMinerManagerObserver +{ Q_OBJECT Q_DISABLE_COPY(MiningFrame) @@ -47,25 +44,10 @@ class MiningFrame : public QFrame, /*public IWalletUiItem, public IDonationManag explicit MiningFrame(QWidget* _parent); ~MiningFrame(); - // IWalletUiItem -// virtual void setCryptoNoteAdapter(ICryptoNoteAdapter *_cryptoNoteAdapter) override; -// virtual void setApplicationEventHandler(IApplicationEventHandler* _applicationEventHandler) override; -// virtual void setDonationManager(IDonationManager* _donationManager) override; virtual void setMiningManager(IMiningManager* _miningManager); virtual void setMainWindow(QWidget *_mainWindow); virtual void setMinerModel(QAbstractItemModel* _model); - // IDonationManagerObserver -// Q_SLOT virtual void donationManagerOpened() override; -// Q_SLOT virtual void donationManagerClosed() override; -// Q_SLOT virtual void donationMiningEnabled(bool _on) override; -// Q_SLOT virtual void donationMiningAddressChanged(const QString& _address) override; -// Q_SLOT virtual void donationMiningAmountChanged(int _amount) override; -// Q_SLOT virtual void donationChangeEnabled(bool _on) override; -// Q_SLOT virtual void donationChangeAddressChanged(const QString& _address) override; -// Q_SLOT virtual void donationChangeAmountChanged(int _amount) override; - - // IMinerManagerObserver Q_SLOT virtual void minersLoaded() override; Q_SLOT virtual void minersUnloaded() override; Q_SLOT virtual void miningStarted() override; @@ -85,23 +67,15 @@ class MiningFrame : public QFrame, /*public IWalletUiItem, public IDonationManag Q_SLOT virtual void connectionErrorCountChanged(quintptr _minerIndex, quint32 _connectionErrorCount) override; Q_SLOT virtual void lastConnectionErrorTimeChanged(quintptr _minerIndex, const QDateTime& _lastConnectionErrorTime) override; - // IApplicationEventHandlerObserver -// Q_SLOT virtual void urlReceived(const QUrl& _url) override; -// Q_SLOT virtual void screenLocked() override; -// Q_SLOT virtual void screenUnlocked() override; - protected: void resizeEvent(QResizeEvent* _event) override; private: QScopedPointer m_ui; -// ICryptoNoteAdapter* m_cryptoNoteAdapter; IMiningManager* m_miningManager; -// IDonationManager* m_donationManager; QWidget* m_mainWindow; QAbstractItemModel* m_minerModel; QDataWidgetMapper* m_dataMapper; -// WalletLargeBlueButton* m_restorePoolListButton; QPushButton* m_restorePoolListButton; void initCpuCoresCombo(); @@ -113,7 +87,6 @@ class MiningFrame : public QFrame, /*public IWalletUiItem, public IDonationManag Q_SLOT void addPoolClicked(); Q_SLOT void cpuCoreCountChangedByUser(int _cpuCoreCount); Q_SLOT void deleteClicked(const QModelIndex& _index); -// Q_SLOT void miningOnLockedScreenChecked(bool _enabled); Q_SLOT void newPoolUrlChanged(); Q_SLOT void schedulePolicyChanged(QAbstractButton* _button, bool _checked); Q_SLOT void startMiningClicked(bool _on); diff --git a/src/MiningFrame.ui b/src/MiningFrame.ui index c2b64b6..cd2cec2 100644 --- a/src/MiningFrame.ui +++ b/src/MiningFrame.ui @@ -337,7 +337,7 @@ 20 - + Qt::NoFocus @@ -347,6 +347,9 @@ QAbstractScrollArea::AdjustToContents + + false + false @@ -486,6 +489,13 @@ + + + WalletGUI::PoolTreeView + QTableView +
PoolTreeView.h
+
+
@@ -584,6 +594,22 @@ + + m_poolView + clicked(QModelIndex) + MiningFrame + deleteClicked(QModelIndex) + + + 434 + 271 + + + 434 + 249 + + + startMiningClicked(bool) diff --git a/src/MiningManager.cpp b/src/MiningManager.cpp index 2bbe77e..b48220e 100644 --- a/src/MiningManager.cpp +++ b/src/MiningManager.cpp @@ -19,7 +19,6 @@ #include #include "MiningManager.h" -//#include "INodeAdapter.h" #include "Miner/Miner.h" #include "settings.h" #include "logger.h" @@ -27,9 +26,8 @@ namespace WalletGUI { -MiningManager::MiningManager(/*ICryptoNoteAdapter* _cryptoNoteAdapter, IDonationManager* _donationManager,*/ QObject* _parent) : - QObject(_parent)/*, m_cryptoNoteAdapter(_cryptoNoteAdapter), m_donationManager(_donationManager)*/, walletModel_(nullptr), m_activeMinerIndex(-1) { -// m_donationManager->addObserver(this); +MiningManager::MiningManager(QObject* _parent) : + QObject(_parent), walletModel_(nullptr), m_activeMinerIndex(-1) { } MiningManager::~MiningManager() { @@ -226,48 +224,6 @@ void MiningManager::disconnectedFromWalletd() { Q_EMIT minersUnloadedSignal(); } -//void MiningManager::donationMiningEnabled(bool _on) { -// for (IPoolMiner* miner : m_miners) { -// if (_on) { -// miner->setAlternateAccount(m_donationManager->getDonationMiningAddress(), m_donationManager->getDonationMiningAmount()); -// } else { -// miner->unsetAlternateAccount(); -// } -// } -//} - -//void MiningManager::donationMiningAddressChanged(const QString& _address) { -// for (IPoolMiner* miner : m_miners) { -// if (m_donationManager->isDonationMiningEnabled()) { -// miner->setAlternateAccount(_address, m_donationManager->getDonationMiningAmount()); -// } else { -// miner->unsetAlternateAccount(); -// } -// } -//} - -//void MiningManager::donationMiningAmountChanged(int _amount) { -// for (IPoolMiner* miner : m_miners) { -// if (m_donationManager->isDonationMiningEnabled()) { -// miner->setAlternateAccount(m_donationManager->getDonationMiningAddress(), _amount); -// } else { -// miner->unsetAlternateAccount(); -// } -// } -//} - -//void MiningManager::donationChangeEnabled(bool _on) { -// // Do nothing -//} - -//void MiningManager::donationChangeAddressChanged(const QString& _address) { -// // Do nothing -//} - -//void MiningManager::donationChangeAmountChanged(int _amount) { -// // Do nothing -//} - void MiningManager::switchToNextPool() { QList errorMinerIndexes = getErrorMiners(); if (errorMinerIndexes.size() == m_miners.size()) { @@ -353,14 +309,10 @@ void MiningManager::updateActiveMinerIndex() { } void MiningManager::addNewMiner(const QString& _host, quint16 _port, quint32 _difficulty) { -// IWalletAdapter* walletAdapter = m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter(); Q_ASSERT(walletModel_ != nullptr); Miner* miner = new Miner(_host, _port, _difficulty, walletModel_->getAddress(), "x", this); miner->addObserver(this); m_miners.append(miner); -// if (m_donationManager->isDonationMiningEnabled()) { -// miner->setAlternateAccount(m_donationManager->getDonationMiningAddress(), m_donationManager->getDonationMiningAmount()); -// } } void MiningManager::loadMiners() { diff --git a/src/MiningManager.h b/src/MiningManager.h index e5c8896..824392a 100644 --- a/src/MiningManager.h +++ b/src/MiningManager.h @@ -23,22 +23,18 @@ #include #include "IMiningManager.h" -//#include "ICryptoNoteAdapter.h" -//#include "IDonationManager.h" #include "IPoolMiner.h" -//#include "IWalletAdapter.h" namespace WalletGUI { -//class ICryptoNoteAdapter; class WalletModel; -class MiningManager : public QObject, public IMiningManager, public IPoolMinerObserver/*, public IDonationManagerObserver*/ { +class MiningManager : public QObject, public IMiningManager, public IPoolMinerObserver { Q_OBJECT Q_DISABLE_COPY(MiningManager) public: - MiningManager(/*ICryptoNoteAdapter* _cryptoNoteAdapter, IDonationManager* _donationManager,*/ QObject* _parent); + MiningManager(QObject* _parent); ~MiningManager(); // IMinerManager @@ -69,22 +65,10 @@ class MiningManager : public QObject, public IMiningManager, public IPoolMinerOb Q_SLOT virtual void connectionErrorCountChanged(quint32 _connectionErrorCount) override; Q_SLOT virtual void lastConnectionErrorTimeChanged(const QDateTime& _lastConnectionErrorTime) override; - // IDonationManagerObserver -// Q_SLOT virtual void donationManagerOpened() override; -// Q_SLOT virtual void donationManagerClosed() override; -// Q_SLOT virtual void donationMiningEnabled(bool _on) override; -// Q_SLOT virtual void donationMiningAddressChanged(const QString& _address) override; -// Q_SLOT virtual void donationMiningAmountChanged(int _amount) override; -// Q_SLOT virtual void donationChangeEnabled(bool _on) override; -// Q_SLOT virtual void donationChangeAddressChanged(const QString& _address) override; -// Q_SLOT virtual void donationChangeAmountChanged(int _amount) override; - void connectedToWalletd(); void disconnectedFromWalletd(); private: -// ICryptoNoteAdapter* m_cryptoNoteAdapter; -// IDonationManager* m_donationManager; WalletModel* walletModel_; QList m_miners; QMap> m_observerConnections; diff --git a/src/NoWalletFrame.cpp b/src/NoWalletFrame.cpp deleted file mode 100644 index 23c0c29..0000000 --- a/src/NoWalletFrame.cpp +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include - -#include "NoWalletFrame.h" -#include "Settings/Settings.h" -#include "ICryptoNoteAdapter.h" -#include "INodeAdapter.h" - -#include "ui_NoWalletFrame.h" - -namespace WalletGui { - -NoWalletFrame::NoWalletFrame(QWidget* _parent) : QFrame(_parent), m_ui(new Ui::NoWalletFrame), - m_walletFile(), m_legacyKeysFile() { - m_ui->setupUi(this); - m_ui->m_passwordFrame->hide(); -} - -NoWalletFrame::~NoWalletFrame() { -} - -void NoWalletFrame::openWallet(const QString& _walletFile, const QString& _legacyKeysFile) { - m_ui->m_passwordFrame->hide(); - setPasswordError(false); - m_walletFile = _walletFile; - m_legacyKeysFile = _legacyKeysFile; - m_ui->m_walletNameLabel->setText(QFileInfo(_walletFile).completeBaseName().split(".wallet")[0]); - if (m_legacyKeysFile.isEmpty()) { - QMetaObject::invokeMethod(this, "loadWallet", Qt::QueuedConnection, Q_ARG(QString, "")); - } else { - QMetaObject::invokeMethod(this, "loadLegacyKeys", Qt::QueuedConnection, Q_ARG(QString, "")); - } -} - -void NoWalletFrame::setPasswordError(bool _isErrorOccured) { - m_ui->m_passwordEdit->setProperty("errorState", _isErrorOccured); - m_ui->m_passwordTextLabel->setProperty("errorState", _isErrorOccured); - m_ui->m_passwordTextLabel->setText(_isErrorOccured ? tr("INCORRECT PASSWORD") : tr("PASSWORD FOR ")); - m_ui->m_walletTextLabel->setVisible(_isErrorOccured ? false : true); - m_ui->m_walletNameLabel->setVisible(_isErrorOccured ? false : true); - - m_ui->m_passwordEdit->style()->unpolish(m_ui->m_passwordEdit); - m_ui->m_passwordEdit->style()->polish(m_ui->m_passwordEdit); - m_ui->m_passwordEdit->update(); - - m_ui->m_passwordTextLabel->style()->unpolish(m_ui->m_passwordTextLabel); - m_ui->m_passwordTextLabel->style()->polish(m_ui->m_passwordTextLabel); - m_ui->m_passwordTextLabel->update(); -} - -void NoWalletFrame::setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) { - m_cryptoNoteAdapter = _cryptoNoteAdapter; - m_cryptoNoteAdapter->addObserver(this); - m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->addObserver(this); -} - -void NoWalletFrame::setMainWindow(QWidget* _mainWindow) { - QList actions = _mainWindow->actions(); - for (const auto& action : actions) { - if (!action->objectName().compare("m_createWalletAction")) { - connect(m_ui->m_createWalletButton, &WalletLargeBlueButton::clicked, action, &QAction::trigger, Qt::UniqueConnection); - } else if (!action->objectName().compare("m_openWalletAction")) { - connect(m_ui->m_openWalletButton, &WalletLargeBlueButton::clicked, action, &QAction::trigger, Qt::UniqueConnection); - } - } -} - -void NoWalletFrame::walletOpened() { - setPasswordError(false); - m_ui->m_passwordFrame->hide(); - setEnabled(true); -} - -void NoWalletFrame::walletOpenError(int _initStatus) { - setEnabled(true); - m_ui->m_passwordEdit->setFocus(); -} - -void NoWalletFrame::walletClosed() { - setEnabled(true); - m_ui->m_passwordEdit->setFocus(); -} - -void NoWalletFrame::passwordChanged() { - // Do nothing -} - -void NoWalletFrame::synchronizationProgressUpdated(quint32 _current, quint32 _total) { - // Do nothing -} - -void NoWalletFrame::synchronizationCompleted() { - // Do nothing -} - -void NoWalletFrame::balanceUpdated(quint64 _actualBalance, quint64 _pendingBalance) { - // Do nothing -} - -void NoWalletFrame::externalTransactionCreated(quintptr _transactionId, const FullTransactionInfo& _transaction) { - // Do nothing -} - -void NoWalletFrame::transactionUpdated(quintptr _transactionId, const FullTransactionInfo& _transaction) { - // Do nothing -} - -void NoWalletFrame::cryptoNoteAdapterInitCompleted(int _status) { - if (_status == 0) { - m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->addObserver(this); - } -} - -void NoWalletFrame::cryptoNoteAdapterDeinitCompleted() { - // Do nothing -} - -void NoWalletFrame::loadWallet(const QString& _password) { - IWalletAdapter* walletAdapter = m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter(); - IWalletAdapter::WalletInitStatus status = walletAdapter->load(m_walletFile, _password); - if (status == IWalletAdapter::INIT_WRONG_PASSWORD) { - if (m_ui->m_passwordFrame->isVisible()) { - setPasswordError(true); - } else { - m_ui->m_passwordFrame->show(); - } - } else if (status == IWalletAdapter::INIT_SUCCESS) { - Settings::instance().setWalletFile(m_walletFile); - } -} - -void NoWalletFrame::loadLegacyKeys(const QString& _password) { - IWalletAdapter* walletAdapter = m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter(); - IWalletAdapter::WalletInitStatus status = walletAdapter->loadLegacyKeys(m_legacyKeysFile, m_walletFile, _password); - if (status == IWalletAdapter::INIT_WRONG_PASSWORD) { - if (m_ui->m_passwordFrame->isVisible()) { - setPasswordError(true); - } else { - m_ui->m_passwordFrame->show(); - } - } else if (status == IWalletAdapter::INIT_SUCCESS) { - Settings::instance().setWalletFile(m_walletFile); - } -} - -void NoWalletFrame::okClicked() { - setEnabled(false); - QString password = m_ui->m_passwordEdit->text(); - m_ui->m_passwordEdit->clear(); - if (m_legacyKeysFile.isEmpty()) { - loadWallet(password); - } else { - loadLegacyKeys(password); - } -} - -void NoWalletFrame::passwordChanged(const QString& _password) { - setPasswordError(false); -} - -} diff --git a/src/NoWalletFrame.h b/src/NoWalletFrame.h deleted file mode 100644 index d944e7e..0000000 --- a/src/NoWalletFrame.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#if 0 - -#pragma once - -#include - -#include "Application/IWalletUiItem.h" -#include "IWalletAdapter.h" -#include "ICryptoNoteAdapter.h" - -namespace Ui { -class NoWalletFrame; -} - -namespace WalletGui { - -class NoWalletFrame : public QFrame, public IWalletUiItem, public IWalletAdapterObserver, public ICryptoNoteAdapterObserver { - Q_OBJECT - Q_DISABLE_COPY(NoWalletFrame) - -public: - explicit NoWalletFrame(QWidget* _parent); - ~NoWalletFrame(); - - void openWallet(const QString& _walletFile, const QString& _legacyKeysFile); - - // IWalletUiItem - virtual void setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) override; - virtual void setMainWindow(QWidget *_mainWindow) override; - - // IWalletAdapterObserver - Q_SLOT virtual void walletOpened() override; - Q_SLOT virtual void walletOpenError(int _initStatus) override; - Q_SLOT virtual void walletClosed() override; - Q_SLOT virtual void passwordChanged() override; - Q_SLOT virtual void synchronizationProgressUpdated(quint32 _current, quint32 _total) override; - Q_SLOT virtual void synchronizationCompleted() override; - Q_SLOT virtual void balanceUpdated(quint64 _actualBalance, quint64 _pendingBalance) override; - Q_SLOT virtual void externalTransactionCreated(quintptr _transactionId, const FullTransactionInfo& _transaction) override; - Q_SLOT virtual void transactionUpdated(quintptr _transactionId, const FullTransactionInfo& _transaction) override; - - // ICryptoNoteAdapterObserver - Q_SLOT virtual void cryptoNoteAdapterInitCompleted(int _status) override; - Q_SLOT virtual void cryptoNoteAdapterDeinitCompleted() override; - -private: - QScopedPointer m_ui; - ICryptoNoteAdapter* m_cryptoNoteAdapter; - QString m_walletFile; - QString m_legacyKeysFile; - - Q_INVOKABLE void loadWallet(const QString& _password); - Q_INVOKABLE void loadLegacyKeys(const QString& _password); - void setPasswordError(bool _isErrorOccured); - Q_SLOT void okClicked(); - Q_SLOT void passwordChanged(const QString& _password); - -Q_SIGNALS: - void createWalletClickedSignal(); - void openWalletClickedSignal(); -}; - -} - -#endif diff --git a/src/NoWalletFrame.ui b/src/NoWalletFrame.ui deleted file mode 100644 index 4755531..0000000 --- a/src/NoWalletFrame.ui +++ /dev/null @@ -1,404 +0,0 @@ - - - NoWalletFrame - - - - 0 - 0 - 838 - 660 - - - - Frame - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 170 - - - - - - - - Welcome to Bytecoin Wallet! - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 25 - - - - - - - - - 476 - 0 - - - - - 338 - 16777215 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - 0 - 0 - - - - [errorState="true"] { - color: #ef3131; -} - - - PASSWORD FOR - - - - - - - - - - - - - - WALLET - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - [errorState="true"] { - border-color: #ef3131; -} - - - QLineEdit::Password - - - - - - - true - - - OK - - - true - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 30 - - - - - - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 220 - 50 - - - - - 220 - 50 - - - - Create wallet - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 32 - 20 - - - - - - - - - 0 - 0 - - - - - 220 - 50 - - - - - 220 - 50 - - - - Open wallet - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 376 - - - - - - - - - WalletGui::WalletOkButton - QPushButton -
Gui/Common/WalletOkButton.h
-
- - WalletGui::WalletHeaderLabel - QLabel -
Gui/Common/WalletTextLabel.h
-
- - WalletGui::WalletLargeBlueButton - QPushButton -
Gui/Common/WalletBlueButton.h
-
-
- - - - m_okButton - clicked() - NoWalletFrame - okClicked() - - - 498 - 266 - - - 418 - 329 - - - - - m_passwordEdit - textChanged(QString) - NoWalletFrame - passwordChanged(QString) - - - 374 - 265 - - - 418 - 329 - - - - - m_passwordEdit - returnPressed() - m_okButton - click() - - - 374 - 265 - - - 616 - 256 - - - - - - createWalletClickedSignal() - openWalletClickedSignal() - okClicked() - passwordChanged(QString) - -
diff --git a/src/PoolTreeView.cpp b/src/PoolTreeView.cpp index d03777c..4711ab0 100644 --- a/src/PoolTreeView.cpp +++ b/src/PoolTreeView.cpp @@ -21,11 +21,12 @@ #include #include "PoolTreeView.h" -#include "Settings/Settings.h" -#include "Style/Style.h" -#include "Models/MinerModel.h" +//#include "Settings/Settings.h" +//#include "Style/Style.h" +#include "MinerModel.h" -namespace WalletGui { +namespace WalletGUI +{ namespace { @@ -82,11 +83,11 @@ class CursorManager { } -PoolTreeView::PoolTreeView(QWidget* _parent) : WalletTreeView(_parent) { - QString styleSheetString = styleSheet(); - styleSheetString.append(POOL_TREE_VIEW_STYLE_SHEET_TEMPLATE); +PoolTreeView::PoolTreeView(QWidget* _parent) : QTableView(_parent) { +// QString styleSheetString = styleSheet(); +// styleSheetString.append(POOL_TREE_VIEW_STYLE_SHEET_TEMPLATE); - setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(styleSheetString)); +// setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(styleSheetString)); setAcceptDrops(true); viewport()->installEventFilter(this); } @@ -99,7 +100,7 @@ bool PoolTreeView::eventFilter(QObject* _object, QEvent* _event) { selectionModel()->clearSelection(); } - return WalletTreeView::eventFilter(_object, _event); + return QTableView::eventFilter(_object, _event); } void PoolTreeView::dragEnterEvent(QDragEnterEvent* _event) { @@ -131,7 +132,7 @@ void PoolTreeView::dropEvent(QDropEvent* _event) { void PoolTreeView::mouseMoveEvent(QMouseEvent* _event) { CursorManager cursorMan(this, _event, state() == PoolTreeView::DraggingState); if (!(_event->buttons() & Qt::LeftButton)) { - WalletTreeView::mouseMoveEvent(_event); + QTableView::mouseMoveEvent(_event); QModelIndex index = indexAt(_event->pos()); if (index.isValid() && index.column() != MinerModel::COLUMN_REMOVE) { selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); @@ -143,17 +144,17 @@ void PoolTreeView::mouseMoveEvent(QMouseEvent* _event) { } if (!m_pressedIndex.isValid()) { - WalletTreeView::mouseMoveEvent(_event); + QTableView::mouseMoveEvent(_event); return; } if ((_event->pos() - m_pressedPosition).manhattanLength() < QApplication::startDragDistance()) { - WalletTreeView::mouseMoveEvent(_event); + QTableView::mouseMoveEvent(_event); return; } if (m_pressedTime.msecsTo(QDateTime::currentDateTime()) < QApplication::startDragTime()) { - WalletTreeView::mouseMoveEvent(_event); + QTableView::mouseMoveEvent(_event); return; } @@ -165,12 +166,12 @@ void PoolTreeView::mousePressEvent(QMouseEvent* _event) { m_pressedTime = QDateTime::currentDateTime(); m_pressedPosition = _event->pos(); m_pressedIndex = indexAt(m_pressedPosition); - WalletTreeView::mousePressEvent(_event); + QTableView::mousePressEvent(_event); } void PoolTreeView::mouseReleaseEvent(QMouseEvent* _event) { CursorManager cursorMan(this, _event); - WalletTreeView::mouseReleaseEvent(_event); + QTableView::mouseReleaseEvent(_event); } } diff --git a/src/PoolTreeView.h b/src/PoolTreeView.h index 71f4406..8e202a8 100644 --- a/src/PoolTreeView.h +++ b/src/PoolTreeView.h @@ -18,28 +18,31 @@ #pragma once #include +#include -#include "Common/WalletTreeView.h" +//#include "Common/WalletTreeView.h" -namespace WalletGui { +namespace WalletGUI +{ -class PoolTreeView : public WalletTreeView { - Q_OBJECT - Q_DISABLE_COPY(PoolTreeView) +class PoolTreeView : public QTableView +{ + Q_OBJECT + Q_DISABLE_COPY(PoolTreeView) public: - explicit PoolTreeView(QWidget* _parent); + explicit PoolTreeView(QWidget* parent); ~PoolTreeView(); - bool eventFilter(QObject* _object, QEvent* _event) override; + bool eventFilter(QObject* object, QEvent* event) override; protected: - void dragEnterEvent(QDragEnterEvent* _event) override; - void dragMoveEvent(QDragMoveEvent* _event) override; - void dropEvent(QDropEvent* _event) override; - void mouseMoveEvent(QMouseEvent* _event) override; - void mousePressEvent(QMouseEvent* _event) override; - void mouseReleaseEvent(QMouseEvent* _event) override; + void dragEnterEvent(QDragEnterEvent* event) override; + void dragMoveEvent(QDragMoveEvent* event) override; + void dropEvent(QDropEvent* event) override; + void mouseMoveEvent(QMouseEvent* event) override; + void mousePressEvent(QMouseEvent* event) override; + void mouseReleaseEvent(QMouseEvent* event) override; private: QDateTime m_pressedTime; diff --git a/src/TransactionsFrame.cpp b/src/TransactionsFrame.cpp deleted file mode 100644 index 85cb748..0000000 --- a/src/TransactionsFrame.cpp +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include -#include -#include -#include -#include - -#include "TransactionsFrame.h" -#include "Settings/Settings.h" -#include "Common/RightAlignmentColumnDelegate.h" -#include "Common/NewTransactionDelegate.h" -#include "Common/TransactionsAmountDelegate.h" -#include "Common/TransactionDetailsDialog.h" -#include "Common/TransactionsHeaderView.h" -#include "Common/TransactionsTimeDelegate.h" -#include "FilteredByAddressTransactionsModel.h" -#include "FilteredByAgeTransactionsModel.h" -#include "FilteredByHashTransactionsModel.h" -#include "FilteredByPeriodTransactionsModel.h" -#include "FilteredTransactionsModel.h" -#include "Models/TransactionsModel.h" -#include "Style/Style.h" -#include "TransactionsDelegate.h" - -#include "ui_TransactionsFrame.h" - -namespace WalletGui { - -namespace { - -const char TRANSACTIONS_FRAME_STYLE_SHEET_TEMPLATE[] = - "WalletGui--TransactionsFrame {" - "background-color: #ffffff;" - "border: none;" - "}" - - "WalletGui--TransactionsFrame #m_resetFilterButton," - "WalletGui--TransactionsFrame #m_filterButton {" - "margin-top: 2px;" - "}" - - "WalletGui--TransactionsFrame > #m_filterFrame > #m_filterPeriodComboFrame > #m_filterCombo {" - "min-width: 100px;" - "max-width: 100px;" - "}" - - "WalletGui--TransactionsFrame > #m_filterFrame > #m_filterHashFrame > QLineEdit," - "WalletGui--TransactionsFrame > #m_filterFrame > #m_filterAddressFrame > QLineEdit {" - "font-size: %fontSizeNormal%;" - "}"; - -const quint32 FILTER_FRAME_HEIGHT = 70; - -} - -TransactionsFrame::TransactionsFrame(QWidget* _parent) : QFrame(_parent), m_ui(new Ui::TransactionsFrame), - m_mainWindow(nullptr), m_transactionsModel(nullptr), m_walletStateModel(nullptr), m_filterByAgeModel(nullptr), - m_filterByPeriodModel(nullptr), m_filterByHashModel(nullptr), m_filterByAddressModel(nullptr), m_animation(new QPropertyAnimation(this)) { - m_ui->setupUi(this); - m_ui->m_filterFrame->hide(); - m_ui->m_filterPeriodFrame->hide(); - m_animation->setTargetObject(m_ui->m_filterFrame); - m_animation->setPropertyName("maximumHeight"); - m_animation->setDuration(200); - m_ui->m_resetFilterButton->hide(); - setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(TRANSACTIONS_FRAME_STYLE_SHEET_TEMPLATE)); - connect(m_animation, &QPropertyAnimation::finished, this, [this] { - m_ui->m_filterButton->setEnabled(true); - }); -} - -TransactionsFrame::~TransactionsFrame() { -} - -void TransactionsFrame::setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) { - m_cryptoNoteAdapter = _cryptoNoteAdapter; -} - -void TransactionsFrame::setAddressBookManager(IAddressBookManager* _addressBookManager) { - m_addressBookManager = _addressBookManager; -} - -void TransactionsFrame::setMainWindow(QWidget* _mainWindow) { - m_mainWindow = _mainWindow; -} - -void TransactionsFrame::setWalletStateModel(QAbstractItemModel* _model) { - m_walletStateModel = _model; -} - -void TransactionsFrame::setTransactionsModel(QAbstractItemModel* _model) { - m_transactionsModel = _model; -} - -void TransactionsFrame::setSortedTransactionsModel(QAbstractItemModel* _model) { - FilteredByAgeTransactionsModel* filterByAgeModel = new FilteredByAgeTransactionsModel(this); - FilteredByPeriodTransactionsModel* filterByPeriodModel = new FilteredByPeriodTransactionsModel(this); - FilteredByHashTransactionsModel* filteredByHashModel = new FilteredByHashTransactionsModel(this); - FilteredByAddressTransactionsModel* filteredByAddressModel = new FilteredByAddressTransactionsModel(this); - m_filterByAgeModel = filterByAgeModel; - m_filterByPeriodModel = filterByPeriodModel; - m_filterByHashModel = filteredByHashModel; - m_filterByAddressModel = filteredByAddressModel; - FilteredTransactionsModel* transactionsModel = new FilteredTransactionsModel(this); - TransactionsDelegate* transactionsDelegate = new TransactionsDelegate(m_cryptoNoteAdapter, m_addressBookManager, transactionsModel, - m_transactionsModel, m_walletStateModel, this); - filterByAgeModel->setSourceModel(_model); - filterByPeriodModel->setSourceModel(m_filterByAgeModel); - filteredByHashModel->setSourceModel(m_filterByPeriodModel); - filteredByAddressModel->setSourceModel(m_filterByHashModel); - transactionsModel->setSourceModel(m_filterByAddressModel); - int newTransactionColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_NEW_TRANSACTION); - int amountColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_AMOUNT); - int transfersColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_TRANSFERS); - int hashColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_HASH); - int timeColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_TIME); - int showTransfersColumn = TransactionsModel::findProxyColumn(transactionsModel, TransactionsModel::COLUMN_SHOW_TRANSFERS); - - m_ui->m_transactionsView->setModel(transactionsModel); - m_ui->m_transactionsView->setLinkLikeColumnSet(QSet() << hashColumn << showTransfersColumn); - m_ui->m_transactionsView->setHorizontalHeader(new TransactionsHeaderView(this)); - m_ui->m_transactionsView->setItemDelegateForColumn(newTransactionColumn, new NewTransactionDelegate(this)); - m_ui->m_transactionsView->setItemDelegateForColumn(timeColumn, new TransactionsTimeDelegate(this)); - m_ui->m_transactionsView->setItemDelegateForColumn(amountColumn, new TransactionsAmountDelegate(true, this)); - m_ui->m_transactionsView->setItemDelegateForColumn(transfersColumn, transactionsDelegate); - m_ui->m_transactionsView->setItemDelegateForColumn(showTransfersColumn, transactionsDelegate); - m_ui->m_transactionsView->horizontalHeader()->setSectionResizeMode(newTransactionColumn, QHeaderView::Fixed); - m_ui->m_transactionsView->horizontalHeader()->setSectionResizeMode(timeColumn, QHeaderView::Fixed); - m_ui->m_transactionsView->horizontalHeader()->setSectionResizeMode(amountColumn, QHeaderView::Fixed); - m_ui->m_transactionsView->horizontalHeader()->setSectionResizeMode(hashColumn, QHeaderView::Fixed); - m_ui->m_transactionsView->horizontalHeader()->setSectionResizeMode(transfersColumn, QHeaderView::Stretch); - m_ui->m_transactionsView->horizontalHeader()->resizeSection(newTransactionColumn, 6); - m_ui->m_transactionsView->horizontalHeader()->resizeSection(timeColumn, 180); - m_ui->m_transactionsView->horizontalHeader()->resizeSection(hashColumn, 280); - m_ui->m_transactionsView->horizontalHeader()->resizeSection(amountColumn, 220); - m_ui->m_transactionsView->horizontalHeader()->resizeSection(showTransfersColumn, 30); - QDateTime currentDateTime = QDateTime::currentDateTime(); - m_ui->m_filterBeginDtedit->setDateTime(currentDateTime.addDays(-1)); - m_ui->m_filterEndDtedit->setDateTime(currentDateTime); - connect(transactionsModel, &QAbstractItemModel::rowsInserted, this, &TransactionsFrame::rowsInserted); -} - -void TransactionsFrame::exportToCsv() { - Q_ASSERT(m_mainWindow != nullptr); - QString file = QFileDialog::getSaveFileName(m_mainWindow, tr("Select CSV file"), QDir::homePath(), "CSV (*.csv)"); - if (!file.isEmpty()) { - QByteArray csv = static_cast(m_transactionsModel)->toCsv(); - QFile f(file); - if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - f.write(csv); - f.close(); - } - } -} - -void TransactionsFrame::transactionDoubleClicked(const QModelIndex& _index) { - if (!_index.isValid()) { - return; - } - - if (_index.data(TransactionsModel::ROLE_COLUMN).toInt() == TransactionsModel::COLUMN_HASH) { - TransactionDetailsDialog dlg(m_cryptoNoteAdapter, m_transactionsModel, _index, m_mainWindow); - dlg.exec(); - } -} - -void TransactionsFrame::transactionClicked(const QModelIndex& _index) { - if (!_index.isValid()) { - return; - } - - if (_index.data(TransactionsModel::ROLE_COLUMN).toInt() == TransactionsModel::COLUMN_SHOW_TRANSFERS) { - m_ui->m_transactionsView->model()->setData(_index, !_index.data(TransactionsModel::ROLE_SHOW_TRANSFERS).toBool(), - TransactionsModel::ROLE_SHOW_TRANSFERS); - int transfersColumn = TransactionsModel::findProxyColumn(m_ui->m_transactionsView->model(), TransactionsModel::COLUMN_TRANSFERS); - QAbstractItemDelegate* delegate = m_ui->m_transactionsView->itemDelegateForColumn(transfersColumn); - int rowHeight = delegate->sizeHint(QStyleOptionViewItem(), _index.sibling(_index.row(), TransactionsModel::COLUMN_TRANSFERS)).height(); - m_ui->m_transactionsView->setRowHeight(_index.row(), rowHeight); - } -} - -void TransactionsFrame::filterChanged(int _index) { - static_cast(m_filterByAgeModel)->setFilter(static_cast(_index)); - if (_index == FilteredByAgeTransactionsModel::FILTER_CUSTOM) { - m_ui->m_filterPeriodFrame->show(); - QDateTime begin = m_ui->m_filterBeginDtedit->dateTime(); - QDateTime end = m_ui->m_filterEndDtedit->dateTime(); - static_cast(m_filterByPeriodModel)->setFilter(begin, end); - } else { - m_ui->m_filterPeriodFrame->hide(); - static_cast(m_filterByPeriodModel)->setFilter(QDateTime(), QDateTime()); - } -} - -void TransactionsFrame::filterPeriodChanged(const QDateTime& _date_time) { - if (m_ui->m_filterCombo->currentIndex() == FilteredByAgeTransactionsModel::FILTER_CUSTOM) { - QDateTime begin = m_ui->m_filterBeginDtedit->dateTime(); - QDateTime end = m_ui->m_filterEndDtedit->dateTime(); - static_cast(m_filterByPeriodModel)->setFilter(begin, end); - } -} - -void TransactionsFrame::filterHashChanged(const QString& _hash) { - QString hash = m_ui->m_filterHashEdit->text().trimmed(); - static_cast(m_filterByHashModel)->setFilter(hash); -} - -void TransactionsFrame::filterAddressChanged(const QString& _hash) { - QString address = m_ui->m_filterAddressEdit->text().trimmed(); - static_cast(m_filterByAddressModel)->setFilter(address); -} - -void TransactionsFrame::showFilter(bool _on) { - m_ui->m_filterButton->setText(_on ? tr("Hide filter") : tr("Show filter")); - m_ui->m_filterButton->setEnabled(false); - m_animation->setStartValue(_on ? 0 : FILTER_FRAME_HEIGHT); - m_animation->setEndValue(_on ? FILTER_FRAME_HEIGHT : 0); - if (_on) { - m_ui->m_filterFrame->setMaximumHeight(0); - m_ui->m_filterFrame->show(); - disconnect(m_animation, &QPropertyAnimation::finished, m_ui->m_filterFrame, &QFrame::hide); - } else { - connect(m_animation, &QPropertyAnimation::finished, m_ui->m_filterFrame, &QFrame::hide); - connect(m_animation, &QPropertyAnimation::finished, this, static_cast(&TransactionsFrame::update)); - } - - m_animation->start(); - if (!_on) { - resetFilter(); - } -} - -void TransactionsFrame::resetClicked() { - resetFilter(); -} - -void TransactionsFrame::rowsInserted(const QModelIndex& _parent, int _first, int _last) { - if (_first != _last) { - return; - } - - QModelIndex index = m_ui->m_transactionsView->model()->index(_first, TransactionsModel::COLUMN_NEW_TRANSACTION); - if (index.data(TransactionsModel::ROLE_NUMBER_OF_CONFIRMATIONS).value() == 0) { - m_ui->m_transactionsView->openPersistentEditor(index); - } -} - -void TransactionsFrame::resetFilter() { - QDateTime currentDateTime = QDateTime::currentDateTime(); - m_ui->m_filterCombo->setCurrentIndex(0); - m_ui->m_filterBeginDtedit->setDateTime(currentDateTime.addDays(-1)); - m_ui->m_filterEndDtedit->setDateTime(currentDateTime); - m_ui->m_filterHashEdit->clear(); - m_ui->m_filterAddressEdit->clear(); -} - -} diff --git a/src/TransactionsFrame.h b/src/TransactionsFrame.h deleted file mode 100644 index aa62062..0000000 --- a/src/TransactionsFrame.h +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#pragma once - -#include - -#include "Application/IWalletUiItem.h" - -class QPropertyAnimation; - -namespace Ui { -class TransactionsFrame; -} - -namespace WalletGui { - -class TransactionsFrame : public QFrame, public IWalletUiItem { - Q_OBJECT - Q_DISABLE_COPY(TransactionsFrame) - -public: - explicit TransactionsFrame(QWidget* _parent); - ~TransactionsFrame(); - - // IWalletUiItem - virtual void setCryptoNoteAdapter(ICryptoNoteAdapter* _cryptoNoteAdapter) override; - virtual void setAddressBookManager(IAddressBookManager* _addressBookManager) override; - virtual void setMainWindow(QWidget* _mainWindow) override; - virtual void setWalletStateModel(QAbstractItemModel* _model) override; - virtual void setTransactionsModel(QAbstractItemModel* _model) override; - virtual void setSortedTransactionsModel(QAbstractItemModel* _model) override; - -private: - QScopedPointer m_ui; - ICryptoNoteAdapter* m_cryptoNoteAdapter; - IAddressBookManager* m_addressBookManager; - QWidget* m_mainWindow; - QAbstractItemModel* m_transactionsModel; - QAbstractItemModel* m_walletStateModel; - QAbstractItemModel* m_filterByAgeModel; - QAbstractItemModel* m_filterByPeriodModel; - QAbstractItemModel* m_filterByHashModel; - QAbstractItemModel* m_filterByAddressModel; - QPropertyAnimation* m_animation; - - void rowsInserted(const QModelIndex& _parent, int _first, int _last); - void resetFilter(); - - Q_SLOT void exportToCsv(); - Q_SLOT void transactionDoubleClicked(const QModelIndex& _index); - Q_SLOT void transactionClicked(const QModelIndex& _index); - Q_SLOT void filterChanged(int _index); - Q_SLOT void filterPeriodChanged(const QDateTime& _dateTime); - Q_SLOT void filterHashChanged(const QString& _hash); - Q_SLOT void filterAddressChanged(const QString& _hash); - Q_SLOT void showFilter(bool _on); - Q_SLOT void resetClicked(); -}; - -} diff --git a/src/TransactionsFrame.ui b/src/TransactionsFrame.ui deleted file mode 100644 index 4ff83f6..0000000 --- a/src/TransactionsFrame.ui +++ /dev/null @@ -1,753 +0,0 @@ - - - TransactionsFrame - - - - 0 - 0 - 894 - 638 - - - - - 0 - 0 - - - - Frame - - - QFrame::NoFrame - - - QFrame::Plain - - - - 0 - - - 25 - - - 23 - - - 25 - - - - - 10 - - - 0 - - - 0 - - - - - Transactions - - - 0 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PointingHandCursor - - - Reset - - - true - - - - - - - PointingHandCursor - - - Qt::NoFocus - - - Show filter - - - true - - - true - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 25 - - - 0 - - - 5 - - - 0 - - - 30 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - PERIOD - - - - - - - Qt::NoFocus - - - - All time - - - - - Last hour - - - - - Last day - - - - - Last week - - - - - Last month - - - - - Last year - - - - - Custom - - - - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - FROM - - - - - - - true - - - - - - dd MMM yyyy, HH:mm - - - true - - - - - - - TO - - - - - - - true - - - - - - dd MMM yyyy, hh:mm - - - true - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - HASH - - - - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 8 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - ADDRESS - - - - - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - true - - - - 0 - 0 - - - - Qt::NoFocus - - - QFrame::NoFrame - - - QAbstractItemView::NoEditTriggers - - - false - - - false - - - true - - - QAbstractItemView::NoSelection - - - QAbstractItemView::SelectItems - - - Qt::ElideMiddle - - - QAbstractItemView::ScrollPerPixel - - - QAbstractItemView::ScrollPerPixel - - - false - - - Qt::NoPen - - - false - - - false - - - false - - - false - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 110 - 30 - - - - - 110 - 30 - - - - Qt::NoFocus - - - Save as CSV - - - - - - - - - - WalletGui::WalletNormalBlueButton - QPushButton -
Gui/Common/WalletBlueButton.h
-
- - WalletGui::WalletHeaderLabel - QLabel -
Gui/Common/WalletTextLabel.h
-
- - WalletGui::WalletNormalGrayTextLabel - QLabel -
Gui/Common/WalletTextLabel.h
-
- - WalletGui::WalletTinyLinkLikeButton - QPushButton -
Gui/Common/WalletLinkLikeButton.h
-
- - WalletGui::WalletTableView - QTableView -
Gui/Common/WalletTableView.h
-
-
- - - - m_exportToCsvButton - clicked() - TransactionsFrame - exportToCsv() - - - 761 - 587 - - - 414 - 306 - - - - - m_filterCombo - currentIndexChanged(int) - TransactionsFrame - filterChanged(int) - - - 93 - 92 - - - 414 - 306 - - - - - m_filterEndDtedit - dateTimeChanged(QDateTime) - TransactionsFrame - filterPeriodChanged(QDateTime) - - - 243 - 150 - - - 414 - 306 - - - - - m_filterHashEdit - textChanged(QString) - TransactionsFrame - filterHashChanged(QString) - - - 566 - 92 - - - 414 - 306 - - - - - m_filterAddressEdit - textChanged(QString) - TransactionsFrame - filterAddressChanged(QString) - - - 566 - 150 - - - 414 - 306 - - - - - m_filterBeginDtedit - dateTimeChanged(QDateTime) - TransactionsFrame - filterPeriodChanged(QDateTime) - - - 93 - 150 - - - 414 - 306 - - - - - m_filterButton - toggled(bool) - TransactionsFrame - showFilter(bool) - - - 135 - 38 - - - 414 - 306 - - - - - m_resetFilterButton - clicked() - TransactionsFrame - resetClicked() - - - 712 - 39 - - - 446 - 318 - - - - - m_filterButton - toggled(bool) - m_resetFilterButton - setVisible(bool) - - - 814 - 39 - - - 712 - 39 - - - - - m_transactionsView - doubleClicked(QModelIndex) - TransactionsFrame - transactionDoubleClicked(QModelIndex) - - - 446 - 360 - - - 446 - 318 - - - - - m_transactionsView - clicked(QModelIndex) - TransactionsFrame - transactionClicked(QModelIndex) - - - 446 - 360 - - - 446 - 318 - - - - - - exportToCsv() - transactionDoubleClicked(QModelIndex) - filterChanged(int) - filterPeriodChanged(QDateTime) - filterHashChanged(QString) - filterAddressChanged(QString) - showFilter(bool) - resetClicked() - transactionClicked(QModelIndex) - -
diff --git a/src/WalletLinkLikeButton.cpp b/src/WalletLinkLikeButton.cpp deleted file mode 100644 index 05f76a6..0000000 --- a/src/WalletLinkLikeButton.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include "WalletLinkLikeButton.h" -#include "Settings/Settings.h" -#include "Style/Style.h" - -namespace WalletGui { - -namespace { - -const char WALLET_LINK_LIKE_BUTTON_STYLE_SHEET_TEMPLATE[] = - "* {" - "font-family: %fontFamily%;" - "}" - - "WalletGui--WalletLinkLikeButton {" - "border: 1px solid transparent;" - "background-color: transparent;" - "color: %fontColorBlueNormal%;" - "}" - - "WalletGui--WalletLinkLikeButton:hover {" - "color: %fontColorBlueHover%;" - "}" - - "WalletGui--WalletLinkLikeButton:pressed {" - "color: %fontColorBluePressed%;" - "}" - - "WalletGui--WalletTinyLinkLikeButton {" - "font-size: %fontSizeTiny%;" - "min-height: 12px;" - "}" - - "WalletGui--WalletNormalLinkLikeButton {" - "font-size: %fontSizeNormal%;" - "min-height: %fontSizeNormal%;" - "}"; - -} - -WalletLinkLikeButton::WalletLinkLikeButton(QWidget* _parent) : QPushButton(_parent) { - setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(WALLET_LINK_LIKE_BUTTON_STYLE_SHEET_TEMPLATE)); -} - -WalletLinkLikeButton::~WalletLinkLikeButton() { -} - -WalletTinyLinkLikeButton::WalletTinyLinkLikeButton(QWidget* _parent) : WalletLinkLikeButton(_parent) { -} - -WalletTinyLinkLikeButton::~WalletTinyLinkLikeButton() { -} - -WalletNormalLinkLikeButton::WalletNormalLinkLikeButton(QWidget* _parent) : WalletLinkLikeButton(_parent) { -} - -WalletNormalLinkLikeButton::~WalletNormalLinkLikeButton() { -} - -} diff --git a/src/WalletLinkLikeButton.h b/src/WalletLinkLikeButton.h deleted file mode 100644 index a75092e..0000000 --- a/src/WalletLinkLikeButton.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#pragma once - -#include - -namespace WalletGui { - -class WalletLinkLikeButton : public QPushButton { - Q_OBJECT - Q_DISABLE_COPY(WalletLinkLikeButton) - -public: - explicit WalletLinkLikeButton(QWidget* _parent); - ~WalletLinkLikeButton(); -}; - -class WalletTinyLinkLikeButton : public WalletLinkLikeButton { - Q_OBJECT - Q_DISABLE_COPY(WalletTinyLinkLikeButton) - -public: - explicit WalletTinyLinkLikeButton(QWidget* _parent); - ~WalletTinyLinkLikeButton(); -}; - -class WalletNormalLinkLikeButton : public WalletLinkLikeButton { - Q_OBJECT - Q_DISABLE_COPY(WalletNormalLinkLikeButton) - -public: - explicit WalletNormalLinkLikeButton(QWidget* _parent); - ~WalletNormalLinkLikeButton(); -}; - -} diff --git a/src/WalletTextLabel.cpp b/src/WalletTextLabel.cpp deleted file mode 100644 index 5475ce5..0000000 --- a/src/WalletTextLabel.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include "WalletTextLabel.h" -#include "Settings/Settings.h" -#include "Style/Style.h" - -namespace WalletGui { - -namespace { - -const char WALLET_TEXT_LABEL_STYLE_SHEET_TEMPLATE[] = - "WalletGui--WalletTextLabel {" - "border: 1px solid transparent;" - "}" - - "WalletGui--WalletTextLabel[errorState=\"true\"] {" - "color: %fontColorRed%;" - "}" - - "WalletGui--WalletTinyGrayTextLabel {" - "color: %fontColorGray%;" - "font-size: %fontSizeTiny%;" - "}" - - "WalletGui--WalletSmallGrayTextLabel {" - "color: %fontColorGray%;" - "font-size: %fontSizeSmall%;" - "}" - - "WalletGui--WalletSmallGreenBoldTextLabel {" - "color: %fontColorGreen%;" - "font-size: %fontSizeSmall%;" - "font-weight: bold;" - "}" - - "WalletGui--WalletSmallBlackTextLabel {" - "color: #000000;" - "font-size: %fontSizeSmall%;" - "}" - - "WalletGui--WalletNormalGrayTextLabel {" - "color: %fontColorGray%;" - "font-size: %fontSizeNormal%;" - "}" - - "WalletGui--WalletNormalGreenBoldTextLabel {" - "color: %fontColorGreen%;" - "font-size: %fontSizeNormal%;" - "font-weight: bold;" - "}" - - "WalletGui--WalletExtraNormalGrayTextLabel {" - "color: %fontColorGray%;" - "font-size: %fontSizeExtraNormal%;" - "}" - - "WalletGui--WalletNormalBlackTextLabel {" - "color: #000000;" - "font-size: %fontSizeNormal%;" - "}" - - "WalletGui--WalletExtraNormalBlackTextLabel {" - "color: #000000;" - "font-size: %fontSizeExtraNormal%;" - "}" - - "WalletGui--WalletLargeBlackTextLabel {" - "color: #000000;" - "font-size: %fontSizeLarge%;" - "}" - - "WalletGui--WalletExtraLargeBlackTextLabel {" - "color: #000000;" - "font-size: %fontSizeExtraLarge%;" - "}" - - "WalletGui--WalletHeaderLabel {" - "min-height: 17;" - "font-size: %fontSizeLarge%;" - "font-weight: bold;" - "}"; - -} - -WalletTextLabel::WalletTextLabel(QWidget* _parent) : QLabel(_parent) { - setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(WALLET_TEXT_LABEL_STYLE_SHEET_TEMPLATE)); -} - -WalletTextLabel::~WalletTextLabel() { -} - -WalletTinyGrayTextLabel::WalletTinyGrayTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletTinyGrayTextLabel::~WalletTinyGrayTextLabel() { -} - -WalletSmallGrayTextLabel::WalletSmallGrayTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletSmallGrayTextLabel::~WalletSmallGrayTextLabel() { -} - -WalletSmallGreenBoldTextLabel::WalletSmallGreenBoldTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletSmallGreenBoldTextLabel::~WalletSmallGreenBoldTextLabel() { -} - -WalletSmallBlackTextLabel::WalletSmallBlackTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletSmallBlackTextLabel::~WalletSmallBlackTextLabel() { -} - -WalletNormalGrayTextLabel::WalletNormalGrayTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletNormalGrayTextLabel::~WalletNormalGrayTextLabel() { -} - -WalletNormalGreenBoldTextLabel::WalletNormalGreenBoldTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletNormalGreenBoldTextLabel::~WalletNormalGreenBoldTextLabel() { -} - -WalletExtraNormalGrayTextLabel::WalletExtraNormalGrayTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletExtraNormalGrayTextLabel::~WalletExtraNormalGrayTextLabel() { -} - -WalletNormalBlackTextLabel::WalletNormalBlackTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletNormalBlackTextLabel::~WalletNormalBlackTextLabel() { -} - -WalletExtraNormalBlackTextLabel::WalletExtraNormalBlackTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletExtraNormalBlackTextLabel::~WalletExtraNormalBlackTextLabel() { -} - -WalletLargeBlackTextLabel::WalletLargeBlackTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletLargeBlackTextLabel::~WalletLargeBlackTextLabel() { -} - -WalletExtraLargeBlackTextLabel::WalletExtraLargeBlackTextLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletExtraLargeBlackTextLabel::~WalletExtraLargeBlackTextLabel() { -} - -WalletHeaderLabel::WalletHeaderLabel(QWidget* _parent) : WalletTextLabel(_parent) { -} - -WalletHeaderLabel::~WalletHeaderLabel() { -} - -} diff --git a/src/WalletTextLabel.h b/src/WalletTextLabel.h deleted file mode 100644 index 70bdb70..0000000 --- a/src/WalletTextLabel.h +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#pragma once - -#include - -namespace WalletGui { - -class WalletTextLabel : public QLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletTextLabel) - -public: - explicit WalletTextLabel(QWidget* _parent); - ~WalletTextLabel(); -}; - -class WalletTinyGrayTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletTinyGrayTextLabel) - -public: - explicit WalletTinyGrayTextLabel(QWidget* _parent); - ~WalletTinyGrayTextLabel(); -}; - -class WalletSmallGrayTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletSmallGrayTextLabel) - -public: - explicit WalletSmallGrayTextLabel(QWidget* _parent); - ~WalletSmallGrayTextLabel(); -}; - -class WalletSmallGreenBoldTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletSmallGreenBoldTextLabel) - -public: - explicit WalletSmallGreenBoldTextLabel(QWidget* _parent); - ~WalletSmallGreenBoldTextLabel(); -}; - -class WalletSmallBlackTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletSmallBlackTextLabel) - -public: - explicit WalletSmallBlackTextLabel(QWidget* _parent); - ~WalletSmallBlackTextLabel(); -}; - -class WalletNormalGrayTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletNormalGrayTextLabel) - -public: - explicit WalletNormalGrayTextLabel(QWidget* _parent); - ~WalletNormalGrayTextLabel(); -}; - -class WalletNormalGreenBoldTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletNormalGreenBoldTextLabel) - -public: - explicit WalletNormalGreenBoldTextLabel(QWidget* _parent); - ~WalletNormalGreenBoldTextLabel(); -}; - -class WalletExtraNormalGrayTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletExtraNormalGrayTextLabel) - -public: - explicit WalletExtraNormalGrayTextLabel(QWidget* _parent); - ~WalletExtraNormalGrayTextLabel(); -}; - -class WalletNormalBlackTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletNormalBlackTextLabel) - -public: - explicit WalletNormalBlackTextLabel(QWidget* _parent); - ~WalletNormalBlackTextLabel(); -}; - -class WalletExtraNormalBlackTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletExtraNormalBlackTextLabel) - -public: - explicit WalletExtraNormalBlackTextLabel(QWidget* _parent); - ~WalletExtraNormalBlackTextLabel(); -}; - -class WalletLargeBlackTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletLargeBlackTextLabel) - -public: - explicit WalletLargeBlackTextLabel(QWidget* _parent); - ~WalletLargeBlackTextLabel(); -}; - -class WalletExtraLargeBlackTextLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletExtraLargeBlackTextLabel) - -public: - explicit WalletExtraLargeBlackTextLabel(QWidget* _parent); - ~WalletExtraLargeBlackTextLabel(); -}; - -class WalletHeaderLabel : public WalletTextLabel { - Q_OBJECT - Q_DISABLE_COPY(WalletHeaderLabel) - -public: - explicit WalletHeaderLabel(QWidget* _parent); - ~WalletHeaderLabel(); -}; - -} diff --git a/src/aboutdialog.ui b/src/aboutdialog.ui index 2fd0b3c..2dfeaef 100644 --- a/src/aboutdialog.ui +++ b/src/aboutdialog.ui @@ -41,7 +41,7 @@ - <html><head/><body><p>Bytecoin version %1-%2-%3</p><p>Bytecoin is the next generation anonymous cryptocurrency based on CryptoNote.</p><p>Copyright © 2012-%4 The Bytecoin developers</p><p>This is free software.</p><p>Distributed under the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.</p><p>Distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details:</p><p><a href="https://www.gnu.org/licenses/lgpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/lgpl.html</span></a></p><p><a href="http://bytecoin.org/"><span style=" text-decoration: underline; color:#0000ff;">https://bytecoin.org/</span></a></p></body></html> + <html><head/><body><p>Bytecoin GUI version %1-%2-%3</p><p>Bytecoin is the next generation anonymous cryptocurrency based on CryptoNote.</p><p>Copyright © 2012-%4 The Bytecoin developers</p><p>This is free software.</p><p>Distributed under the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.</p><p>Distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details:</p><p><a href="https://www.gnu.org/licenses/lgpl.html"><span style=" text-decoration: underline; color:#0000ff;">https://www.gnu.org/licenses/lgpl.html</span></a></p><p><a href="http://bytecoin.org/"><span style=" text-decoration: underline; color:#0000ff;">https://bytecoin.org/</span></a></p></body></html> Qt::RichText diff --git a/src/addressbookdialog.cpp b/src/addressbookdialog.cpp index 0759369..a11ebae 100644 --- a/src/addressbookdialog.cpp +++ b/src/addressbookdialog.cpp @@ -17,7 +17,6 @@ #include "addressbookdialog.h" #include "addressbookmodel.h" -//#include "Common/RightAlignmentColumnDelegate.h" #include "ui_addressbookdialog.h" diff --git a/src/addressbookframe.cpp b/src/addressbookframe.cpp index 7ff07b0..a31b3c9 100644 --- a/src/addressbookframe.cpp +++ b/src/addressbookframe.cpp @@ -23,9 +23,7 @@ #include "addressbookframe.h" #include "addressbookdelegate.h" #include "addressbookmanager.h" -#include "QuestionDialog.h" -//#include "Common/RightAlignmentColumnDelegate.h" -//#include "DonationColumnDelegate.h" +#include "questiondialog.h" #include "addressbookmodel.h" #include "newaddressdialog.h" #include "ui_addressbookframe.h" diff --git a/src/addressbookmanager.cpp b/src/addressbookmanager.cpp index 5e6973f..85cfd31 100644 --- a/src/addressbookmanager.cpp +++ b/src/addressbookmanager.cpp @@ -37,7 +37,6 @@ constexpr const char ADDRESS_ITEM_ADDRESS_TAG_NAME[] = "address"; AddressBookManager::AddressBookManager(QObject* _parent) : QObject(_parent) { -// const QSettings::Format jsonFormat = QSettings::registerFormat("json", readJsonFile, writeJsonFile); const QString jsonFile = Settings::instance().getDefaultWorkDir().absoluteFilePath("address_book.json"); addressBook_.reset(new QSettings(jsonFile/*, jsonFormat*/, Settings::instance().getFormat())); @@ -51,7 +50,6 @@ AddressBookManager::~AddressBookManager() AddressIndex AddressBookManager::getAddressCount() const { -// return m_addressBookObject[ADDRESS_BOOK_TAG_NAME].toArray().size(); return addressBook_->value(ADDRESS_BOOK_TAG_NAME).toList().size(); } @@ -110,7 +108,6 @@ void AddressBookManager::addAddress(const QString& _label, const QString& _addre addressBook_->setValue(ADDRESS_BOOK_TAG_NAME, addressArray); addressIndexes_.insert(_address, addressArray.size() - 1); labelIndexes_.insert(_label, addressArray.size() - 1); -// saveAddressBook(); emit addressAddedSignal(addressArray.size() - 1); } @@ -132,7 +129,6 @@ void AddressBookManager::editAddress(AddressIndex _addressIndex, const QString& labelIndexes_.remove(oldLabel); addressIndexes_.insert(_address, _addressIndex); labelIndexes_.insert(_label, _addressIndex); -// saveAddressBook(); emit addressEditedSignal(_addressIndex); } @@ -158,73 +154,9 @@ void AddressBookManager::removeAddress(AddressIndex _addressIndex) } addressBook_->setValue(ADDRESS_BOOK_TAG_NAME, addressArray); -// saveAddressBook(); emit addressRemovedSignal(_addressIndex); } -//void AddressBookManager::addObserver(IAddressBookManagerObserver* _observer) { -// QObject* observer = dynamic_cast(_observer); -// connect(this, SIGNAL(addressBookOpenedSignal()), observer, SLOT(addressBookOpened())); -// connect(this, SIGNAL(addressBookClosedSignal()), observer, SLOT(addressBookClosed())); -// connect(this, SIGNAL(addressAddedSignal(AddressIndex)), observer, SLOT(addressAdded(AddressIndex))); -// connect(this, SIGNAL(addressEditedSignal(AddressIndex)), observer, SLOT(addressEdited(AddressIndex))); -// connect(this, SIGNAL(addressRemovedSignal(AddressIndex)), observer, SLOT(addressRemoved(AddressIndex))); -//} - -//void AddressBookManager::removeObserver(IAddressBookManagerObserver* _observer) { -// QObject* observer = dynamic_cast(_observer); -// disconnect(this, SIGNAL(addressBookOpenedSignal()), observer, SLOT(addressBookOpened())); -// disconnect(this, SIGNAL(addressBookClosedSignal()), observer, SLOT(addressBookClosed())); -// disconnect(this, SIGNAL(addressAddedSignal(AddressIndex)), observer, SLOT(addressAdded(AddressIndex))); -// disconnect(this, SIGNAL(addressEditedSignal(AddressIndex)), observer, SLOT(addressEdited(AddressIndex))); -// disconnect(this, SIGNAL(addressRemovedSignal(AddressIndex)), observer, SLOT(addressRemoved(AddressIndex))); -//} - -//void AddressBookManager::walletOpened() { -// QByteArray userData = m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->getUserData(); -// bool needOverwrite = false; -// if (userData.isEmpty()) { -// QFile addressBookFile(Settings::instance().getLegacyAddressBookFile()); -// if (addressBookFile.open(QIODevice::ReadOnly)) { -// needOverwrite = true; -// userData = addressBookFile.readAll(); -// } -// } - -// if (!userData.isEmpty()) { -// QJsonDocument doc = QJsonDocument::fromBinaryData(qUncompress(userData)); -// if (doc.isNull()) { -// doc = QJsonDocument::fromJson(userData); -// if (!doc.isNull()) { -// needOverwrite = true; -// } -// } - -// if (!doc.isNull()) { -// if (doc.isArray()) { -// m_addressBookObject.insert(ADDRESS_BOOK_TAG_NAME, doc.array()); -// needOverwrite = true; -// } else { -// m_addressBookObject = doc.object(); -// } - -// if (needOverwrite) { -// saveAddressBook(); -// } -// } -// } - -// buildIndexes(); -// Q_EMIT addressBookOpenedSignal(); -// Q_EMIT donationManagerOpenedSignal(); -//} - -void AddressBookManager::saveAddressBook() -{ -// m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->setUserData(qCompress(QJsonDocument(m_addressBookObject).toBinaryData())); - -} - void AddressBookManager::buildIndexes() { const QVariantList addressArray = addressBook_->value(ADDRESS_BOOK_TAG_NAME).toList(); for (int i = 0; i < addressArray.size(); ++i) { diff --git a/src/addressbookmanager.h b/src/addressbookmanager.h index ffa9440..eb6fe52 100644 --- a/src/addressbookmanager.h +++ b/src/addressbookmanager.h @@ -51,16 +51,11 @@ class AddressBookManager : public QObject void editAddress(AddressIndex _addressIndex, const QString& _label, const QString& _address); void removeAddress(AddressIndex _addressIndex); -// void addObserver(IAddressBookManagerObserver* _observer); -// void removeObserver(IAddressBookManagerObserver* _observer); - private: -// QJsonObject addressBookObject_; QScopedPointer addressBook_; QHash addressIndexes_; QHash labelIndexes_; - void saveAddressBook(); void buildIndexes(); signals: diff --git a/src/addressbookmodel.cpp b/src/addressbookmodel.cpp index 9ea9671..cfc05f6 100644 --- a/src/addressbookmodel.cpp +++ b/src/addressbookmodel.cpp @@ -37,9 +37,6 @@ AddressBookModel::AddressBookModel(AddressBookManager* _addressBookManager, QObj , m_columnCount(AddressBookModel::staticMetaObject.enumerator(AddressBookModel::staticMetaObject.indexOfEnumerator("Columns")).keyCount()) , m_rowCount(0) { -// m_addressBookManager->addObserver(this); -// connect(m_addressBookManager, &AddressBookManager::addressBookOpenedSignal, this, &AddressBookModel::addressBookOpened); -// connect(m_addressBookManager, &AddressBookManager::addressBookClosedSignal, this, &AddressBookModel::addressBookClosed); connect(m_addressBookManager, &AddressBookManager::addressAddedSignal, this, &AddressBookModel::addressAdded); connect(m_addressBookManager, &AddressBookManager::addressEditedSignal, this, &AddressBookModel::addressEdited); connect(m_addressBookManager, &AddressBookManager::addressRemovedSignal, this, &AddressBookModel::addressRemoved); @@ -92,8 +89,6 @@ QVariant AddressBookModel::headerData(int _section, Qt::Orientation _orientation return tr("Label"); case COLUMN_ADDRESS: return tr("Address"); -// case COLUMN_DONATION: -// return tr("Donation"); } break; @@ -105,8 +100,6 @@ QVariant AddressBookModel::headerData(int _section, Qt::Orientation _orientation return static_cast(Qt::AlignLeft | Qt::AlignVCenter); case COLUMN_ADDRESS: return static_cast(Qt::AlignRight | Qt::AlignVCenter); -// case COLUMN_DONATION: -// return static_cast(Qt::AlignCenter); } break; @@ -186,10 +179,6 @@ QVariant AddressBookModel::getDisplayRole(const QModelIndex& _index) const { } QVariant AddressBookModel::getDecorationRole(const QModelIndex& /*_index*/) const { -// if (_index.column() == COLUMN_DONATION && _index.data(ROLE_IS_DONATION_ADDRESS).toBool()) { -// return QPixmap(":icons/donation"); -// } - return QVariant(); } @@ -200,8 +189,6 @@ QVariant AddressBookModel::getUserRole(const QModelIndex& _index, int _role) con return addressItem.label; case ROLE_ADDRESS: return addressItem.address; -// case ROLE_IS_DONATION_ADDRESS: -// return addressItem.isDonationAddress; case ROLE_COLUMN: return headerData(_index.column(), Qt::Horizontal, _role); case ROLE_ROW: diff --git a/src/application.cpp b/src/application.cpp index 0a7c177..ff80e3f 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "application.h" #include "signalhandler.h" @@ -21,6 +22,7 @@ #include "changepassworddialog.h" #include "askpassworddialog.h" #include "crashdialog.h" +#include "importkeydialog.h" namespace WalletGUI { @@ -74,13 +76,13 @@ bool WalletApplication::init() makeDataDir(logsDir); WalletLogger::init(logsDir, true, this); WalletLogger::info(tr("[Application] Initializing...")); - QString path = dataDir.absoluteFilePath("bytecoinwallet.lock"); + QString path = dataDir.absoluteFilePath("bytecoin-gui.lock"); m_lockFile.reset(new QLockFile(path)); if (!m_lockFile->tryLock()) { - WalletLogger::warning(tr("[Application] Bytecoin wallet already running")); - QMessageBox::warning(nullptr, QObject::tr("Fail"), "Bytecoin wallet already running"); + WalletLogger::warning(tr("[Application] Bytecoin wallet GUI already running")); + QMessageBox::warning(nullptr, QObject::tr("Fail"), "Bytecoin wallet GUI already running"); return false; } @@ -107,6 +109,7 @@ bool WalletApplication::init() connect(m_mainWindow, &MainWindow::restartDaemon, this, &WalletApplication::restartDaemon); connect(m_mainWindow, &MainWindow::createWalletSignal, this, &WalletApplication::createWallet); + connect(m_mainWindow, &MainWindow::importKeysSignal, this, &WalletApplication::importKeys); connect(m_mainWindow, &MainWindow::openWalletSignal, this, &WalletApplication::openWallet); connect(m_mainWindow, &MainWindow::remoteWalletSignal, this, &WalletApplication::remoteWallet); connect(m_mainWindow, &MainWindow::encryptWalletSignal, this, &WalletApplication::encryptWallet); @@ -141,6 +144,8 @@ void WalletApplication::subscribeToWalletd() connect(walletd_, &RemoteWalletd::networkErrorSignal, m_miningManager, &MiningManager::disconnectedFromWalletd); connect(walletd_, &RemoteWalletd::packetSent, m_mainWindow, &MainWindow::packetSent); connect(walletd_, &RemoteWalletd::packetReceived, m_mainWindow, &MainWindow::packetReceived); + + connect(walletd_, &RemoteWalletd::authRequiredSignal, this, &WalletApplication::requestWalletdAuth); } /* static */ @@ -213,7 +218,7 @@ void WalletApplication::createWalletd() { const QString& walletFile = Settings::instance().getWalletFile(); Q_ASSERT(!walletFile.isEmpty()); - runBuiltinWalletd(walletFile, false); + runBuiltinWalletd(walletFile, false, QByteArray{}); } else connectToRemoteWalletd(); @@ -230,7 +235,7 @@ void WalletApplication::splashMsg(const QString& msg) m_mainWindow->splashMsg(msg); } -void WalletApplication::runBuiltinWalletd(const QString& walletFile, bool createNew) +void WalletApplication::runBuiltinWalletd(const QString& walletFile, bool createNew, QByteArray&& keys) { if (walletd_) { @@ -239,7 +244,7 @@ void WalletApplication::runBuiltinWalletd(const QString& walletFile, bool create } splashMsg(tr("Running walletd...")); - BuiltinWalletd* walletd = new BuiltinWalletd(walletFile, createNew, this); + BuiltinWalletd* walletd = new BuiltinWalletd(walletFile, createNew, std::move(keys), this); walletd_ = walletd; connect(walletd, &BuiltinWalletd::daemonStandardOutputSignal, m_mainWindow, &MainWindow::addDaemonOutput); @@ -388,7 +393,7 @@ void WalletApplication::createWallet(QWidget* parent) if (fileName.isEmpty()) return; - runBuiltinWalletd(fileName, true); + runBuiltinWalletd(fileName, true, QByteArray{}); } void WalletApplication::openWallet(QWidget* parent) @@ -401,7 +406,7 @@ void WalletApplication::openWallet(QWidget* parent) if (fileName.isEmpty()) return; - runBuiltinWalletd(fileName, false); + runBuiltinWalletd(fileName, false, QByteArray{}); } void WalletApplication::remoteWallet(QWidget* parent) @@ -423,9 +428,27 @@ void WalletApplication::encryptWallet(QWidget *parent) walletd->changeWalletPassword(dlg.getOldPassword(), dlg.getNewPassword()); } +void WalletApplication::importKeys(QWidget* parent) +{ + ImportKeyDialog dlg(parent); + if (dlg.exec() != QDialog::Accepted) + return; + + const QString fileName = QFileDialog::getSaveFileName( + parent, + tr("Create wallet file"), + QDir::homePath(), + tr("Wallet files (*.wallet);;All files (*)")); + if (fileName.isEmpty()) + return; + + QByteArray keys = dlg.getKey(); + runBuiltinWalletd(fileName, true, std::move(keys)); +} + void WalletApplication::requestPassword() { - AskPasswordDialog dlg(m_mainWindow); + AskPasswordDialog dlg(false, m_mainWindow); if (dlg.exec() == QDialog::Accepted) static_cast(walletd_)->setPassword(dlg.getPassword()); else @@ -441,4 +464,19 @@ void WalletApplication::requestPasswordWithConfirmation() walletd_->stop(); } +void WalletApplication::requestWalletdAuth(QAuthenticator* authenticator) +{ + AskPasswordDialog dlg(true, m_mainWindow); + if (dlg.exec() == QDialog::Accepted) + { + authenticator->setUser(dlg.getUser()); + authenticator->setPassword(dlg.getPassword()); + } + else + { + walletd_->stop(); + detached(); + } +} + } diff --git a/src/application.h b/src/application.h index c4b9185..6d35055 100644 --- a/src/application.h +++ b/src/application.h @@ -9,6 +9,7 @@ class QLockFile; class QDir; +class QAuthenticator; namespace WalletGUI { @@ -56,6 +57,7 @@ class WalletApplication: public QApplication void createWalletd(); void subscribeToWalletd(); void firstRun(); + void runBuiltinWalletd(const QString& walletFile, bool createNew, QByteArray&& keys); signals: void builtinRunSignal(); @@ -66,7 +68,6 @@ public slots: void sendTx(const RpcApi::SendTransaction::Request& req); void restartDaemon(); - void runBuiltinWalletd(const QString& walletFile, bool createNew); void connectToRemoteWalletd(); @@ -74,6 +75,7 @@ public slots: void openWallet(QWidget* parent); void remoteWallet(QWidget* parent); void encryptWallet(QWidget* parent); + void importKeys(QWidget* parent); void splashMsg(const QString& msg); @@ -85,6 +87,7 @@ private slots: void daemonFinished(int exitCode, QProcess::ExitStatus exitStatus); void requestPassword(); void requestPasswordWithConfirmation(); + void requestWalletdAuth(QAuthenticator* authenticator); #ifdef Q_OS_MAC private: diff --git a/src/askpassworddialog.cpp b/src/askpassworddialog.cpp index 96276ca..e0132b6 100644 --- a/src/askpassworddialog.cpp +++ b/src/askpassworddialog.cpp @@ -4,13 +4,15 @@ namespace WalletGUI { -AskPasswordDialog::AskPasswordDialog(QWidget *parent) : - QDialog(parent, Qt::Dialog), - ui(new Ui::AskPasswordDialog) +AskPasswordDialog::AskPasswordDialog(bool askUserName, QWidget *parent) + : QDialog(parent, Qt::Dialog) + , ui(new Ui::AskPasswordDialog) { ui->setupUi(this); -// setWindowTitle("Bytecoin"); + ui->userLabel->setVisible(askUserName); + ui->userEdit->setVisible(askUserName); + adjustSize(); } AskPasswordDialog::~AskPasswordDialog() @@ -26,9 +28,19 @@ void AskPasswordDialog::passwordChanged(const QString& password) password_ = password; } +void AskPasswordDialog::userChanged(const QString& user) +{ + user_ = user; +} + QString AskPasswordDialog::getPassword() const { return password_; } +QString AskPasswordDialog::getUser() const +{ + return user_; +} + } diff --git a/src/askpassworddialog.h b/src/askpassworddialog.h index 5b8c5b1..33ec135 100644 --- a/src/askpassworddialog.h +++ b/src/askpassworddialog.h @@ -15,18 +15,21 @@ class AskPasswordDialog : public QDialog Q_OBJECT public: - explicit AskPasswordDialog(QWidget *parent = 0); + explicit AskPasswordDialog(bool askUserName, QWidget *parent = 0); ~AskPasswordDialog(); QString getPassword() const; + QString getUser() const; private slots: void passwordChanged(const QString& password); + void userChanged(const QString& password); private: Ui::AskPasswordDialog *ui; QString password_; + QString user_; }; } diff --git a/src/askpassworddialog.ui b/src/askpassworddialog.ui index 65ac084..06d334d 100644 --- a/src/askpassworddialog.ui +++ b/src/askpassworddialog.ui @@ -9,8 +9,8 @@ 0 0 - 337 - 112 + 349 + 177 @@ -25,11 +25,21 @@ 20 - 40 + 0 + + + + User: + + + + + + @@ -52,7 +62,7 @@ 20 - 40 + 0 @@ -119,8 +129,25 @@ + + userEdit + textChanged(QString) + AskPasswordDialog + userChanged(QString) + + + 174 + 55 + + + 174 + 88 + + + passwordChanged(QString) + userChanged(QString) diff --git a/src/balanceoverviewframe.cpp b/src/balanceoverviewframe.cpp index 520abd8..33560fa 100644 --- a/src/balanceoverviewframe.cpp +++ b/src/balanceoverviewframe.cpp @@ -27,7 +27,6 @@ BalanceOverviewFrame::BalanceOverviewFrame(QWidget *parent) , syncLabel_(new QLabel(this)) { ui->setupUi(this); -// ui->m_copyLabel->hide(); ui->m_overviewSpendableBalanceLabel->installEventFilter(this); ui->m_overviewLockedOrUnconfirmedBalanceLabel->installEventFilter(this); diff --git a/src/bytecoin-gui.pro b/src/bytecoin-gui.pro index 1e90004..2c146bb 100644 --- a/src/bytecoin-gui.pro +++ b/src/bytecoin-gui.pro @@ -12,14 +12,15 @@ TARGET = bytecoin-gui TEMPLATE = app !win32: QMAKE_CXXFLAGS += -std=c++14 -Wall -Wextra -pedantic -macx: QMAKE_CXXFLAGS += -mmacosx-version-min=10.11 -macx: QMAKE_CFLAGS += -mmacosx-version-min=10.11 +macx: QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.11 macx: ICON = images/bytecoin.icns +win32: RC_ICONS = images/bytecoin.ico +win32: VERSION = 2.18.2.19 #QMAKE_CXXFLAGS += -fno-omit-frame-pointer -fsanitize=address,undefined #LIBS += -lasan -lubsan -CONFIG += c++14 strict_c++ +CONFIG += c++14 strict_c++ no-opengl # copy walletd adjacent to bytecoin-gui binary on all 3 platforms win32 { @@ -57,7 +58,6 @@ SOURCES += main.cpp\ logger.cpp \ okbutton.cpp \ statusbar.cpp \ - tableview.cpp \ windoweditemmodel.cpp \ walletmodel.cpp \ sendframe.cpp \ @@ -65,7 +65,6 @@ SOURCES += main.cpp\ resizablescrollarea.cpp \ common.cpp \ connectionoptionsframe.cpp \ - optionsdialog.cpp \ settings.cpp \ Miner/Miner.cpp \ Miner/StratumClient.cpp \ @@ -75,7 +74,6 @@ SOURCES += main.cpp\ MiningFrame.cpp \ MiningManager.cpp \ PoolHeaderView.cpp \ - QuestionDialog.cpp \ connectselectiondialog.cpp \ walletd.cpp \ rpcapi.cpp \ @@ -94,7 +92,10 @@ SOURCES += main.cpp\ addressbookdialog.cpp \ popup.cpp \ logframe.cpp \ - askpassworddialog.cpp + askpassworddialog.cpp \ + importkeydialog.cpp \ + questiondialog.cpp \ + PoolTreeView.cpp HEADERS += mainwindow.h \ signalhandler.h \ @@ -110,7 +111,6 @@ HEADERS += mainwindow.h \ logger.h \ okbutton.h \ statusbar.h \ - tableview.h \ windoweditemmodel.h \ walletmodel.h \ sendframe.h \ @@ -118,7 +118,6 @@ HEADERS += mainwindow.h \ resizablescrollarea.h \ common.h \ connectionoptionsframe.h \ - optionsdialog.h \ settings.h \ Miner/Miner.h \ Miner/StratumClient.h \ @@ -128,7 +127,6 @@ HEADERS += mainwindow.h \ MiningFrame.h \ MiningManager.h \ PoolHeaderView.h \ - QuestionDialog.h \ IMinerWorker.h \ IMiningManager.h \ IPoolClient.h \ @@ -151,7 +149,10 @@ HEADERS += mainwindow.h \ addressbookdialog.h \ popup.h \ logframe.h \ - askpassworddialog.h + askpassworddialog.h \ + importkeydialog.h \ + questiondialog.h \ + PoolTreeView.h FORMS += mainwindow.ui \ overviewframe.ui \ @@ -161,7 +162,6 @@ FORMS += mainwindow.ui \ connectionoptionsframe.ui \ optionsdialog.ui \ MiningFrame.ui \ - QuestionDialog.ui \ connectselectiondialog.ui \ addressbookframe.ui \ newaddressdialog.ui \ @@ -171,7 +171,9 @@ FORMS += mainwindow.ui \ changepassworddialog.ui \ addressbookdialog.ui \ logframe.ui \ - askpassworddialog.ui + askpassworddialog.ui \ + importkeydialog.ui \ + questiondialog.ui RESOURCES += \ resources.qrc \ diff --git a/src/changepassworddialog.cpp b/src/changepassworddialog.cpp index 6d65a98..09b8560 100644 --- a/src/changepassworddialog.cpp +++ b/src/changepassworddialog.cpp @@ -10,7 +10,6 @@ ChangePasswordDialog::ChangePasswordDialog(bool askCurrentPassword, QWidget *par , ui(new Ui::ChangePasswordDialog) { ui->setupUi(this); -// setWindowTitle("Bytecoin"); ui->currPasswordLabel->setVisible(askCurrentPassword); ui->currPasswordEdit->setVisible(askCurrentPassword); diff --git a/src/connectionoptionsframe.cpp b/src/connectionoptionsframe.cpp index 63d9b54..1566863 100644 --- a/src/connectionoptionsframe.cpp +++ b/src/connectionoptionsframe.cpp @@ -21,10 +21,6 @@ //#include #include "connectionoptionsframe.h" -//#include "Settings/Settings.h" -//#include "ICryptoNoteAdapter.h" -//#include "INodeAdapter.h" -//#include "Style/Style.h" #include "settings.h" #include "common.h" @@ -70,12 +66,6 @@ ConnectionOptionsFrame::ConnectionOptionsFrame(QWidget* parent) , m_ui(new Ui::ConnectionOptionsFrame) { m_ui->setupUi(this); -// m_ui->m_connectionButtonGroup->setId(m_ui->m_builtinRadio, static_cast(ConnectionMethod::BUILTIN)); -// m_ui->m_connectionButtonGroup->setId(m_ui->m_localRadio, static_cast(ConnectionMethod::LOCAL)); -// m_ui->m_connectionButtonGroup->setId(m_ui->m_remoteRadio, static_cast(ConnectionMethod::REMOTE)); -// setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(CONNECTION_OPTIONS_STYLE_SHEET_TEMPLATE)); -// m_ui->m_validationLabel->setText(""); -// m_ui->m_validationLabel->setStyleSheet(VALIDATION_LABEL_STYLE_SHEET); } ConnectionOptionsFrame::~ConnectionOptionsFrame() @@ -83,7 +73,6 @@ ConnectionOptionsFrame::~ConnectionOptionsFrame() void ConnectionOptionsFrame::load() { -// m_ui->m_localPortSpin->setValue(Settings::instance().getLocalRpcPort()); const QUrl remoteUrl = QUrl::fromUserInput(Settings::instance().getRemoteRpcEndPoint()); if (!remoteUrl.isValid()) m_ui->m_remotePortSpin->setValue(Settings::instance().getDefaultRpcPort()); @@ -92,39 +81,17 @@ void ConnectionOptionsFrame::load() m_ui->m_remoteHostEdit->setText(remoteUrl.host()); m_ui->m_remotePortSpin->setValue(remoteUrl.port()); } -// const QStringList recentWallets = Settings::instance().getRecentWallets(); -// m_ui->m_walletFileEdit->setText(recentWallets.empty() ? QString() : recentWallets.first()); -// m_ui->m_walletFileEdit->setText(Settings::instance().getWalletFile()); - -// switch (Settings::instance().getConnectionMethod()) -// { -// case ConnectionMethod::BUILTIN: -// m_ui->m_builtinRadio->toggle(); -// break; -// case ConnectionMethod::LOCAL: -// m_ui->m_localRadio->toggle(); -// break; -// case ConnectionMethod::REMOTE: -// m_ui->m_remoteRadio->toggle(); -// break; -// } - -// walletFileNameChanged(m_ui->m_walletFileEdit->text()); remoteHostNameChanged(m_ui->m_remoteHostEdit->text()); } void ConnectionOptionsFrame::save() { -// Settings::instance().setConnectionMethod(static_cast(m_ui->m_connectionButtonGroup->checkedId())); -// Settings::instance().setLocalRpcPort(m_ui->m_localPortSpin->value()); Settings::instance().setConnectionMethod(ConnectionMethod::REMOTE); Settings::instance().setRemoteRpcEndPoint(m_ui->m_remoteHostEdit->text(), m_ui->m_remotePortSpin->value()); -// Settings::instance().setWalletFile(m_ui->m_walletFileEdit->text()); switch (Settings::instance().getConnectionMethod()) { case ConnectionMethod::BUILTIN: -// Settings::instance().addRecentWallet(m_ui->m_walletFileEdit->text()); break; case ConnectionMethod::LOCAL: case ConnectionMethod::REMOTE: @@ -135,43 +102,25 @@ void ConnectionOptionsFrame::save() bool ConnectionOptionsFrame::canAccept() const { -// if (m_ui->m_remoteRadio->isChecked()) - return isIpOrHostName(m_ui->m_remoteHostEdit->text()); -// return true; + return isIpOrHostName(m_ui->m_remoteHostEdit->text()); } bool ConnectionOptionsFrame::remoteHostNameChanged(const QString& host) { bool valid = true; -// if (m_ui->m_remoteRadio->isChecked()) -// { - valid = isIpOrHostName(host); - const QString errMsg = valid ? QString() : tr("Invalid host name."); -// m_ui->m_validationLabel->setText(errMsg); -// } + valid = isIpOrHostName(host); +// const QString errMsg = valid ? QString() : tr("Invalid host name."); emit disableAcceptButtonSignal(!valid); return valid; } bool ConnectionOptionsFrame::walletFileNameChanged(const QString& /*wallet*/) { -// bool valid = true; -// if (m_ui->m_builtinRadio->isChecked()) -// { -// const QFileInfo walletFile(wallet); -// valid = walletFile.isFile() && walletFile.exists(wallet); -// const QString errMsg = valid ? QString() : tr("The wallet file does not exist."); -//// m_ui->m_validationLabel->setText(errMsg); -// } -// emit disableAcceptButtonSignal(!valid); -// return valid; return true; } void ConnectionOptionsFrame::connectionButtonClicked(int /*buttonId*/) { -// m_ui->m_validationLabel->setText(""); -// walletFileNameChanged(m_ui->m_walletFileEdit->text()); remoteHostNameChanged(m_ui->m_remoteHostEdit->text()); } @@ -184,8 +133,6 @@ void ConnectionOptionsFrame::showOpenWalletFileDialog() tr("Wallet files (*.wallet);;All files (*)")); if (fileName.isEmpty()) return; -// m_ui->m_walletFileEdit->setText(fileName); -// walletFileNameChanged(fileName); } void ConnectionOptionsFrame::showCreateWalletFileDialog() @@ -197,8 +144,6 @@ void ConnectionOptionsFrame::showCreateWalletFileDialog() tr("Wallet files (*.wallet);;All files (*)")); if (fileName.isEmpty()) return; -// m_ui->m_walletFileEdit->setText(fileName); -// walletFileNameChanged(fileName); } } diff --git a/src/connectionoptionsframe.h b/src/connectionoptionsframe.h index c4cae3f..f1423f0 100644 --- a/src/connectionoptionsframe.h +++ b/src/connectionoptionsframe.h @@ -19,9 +19,6 @@ #include -//#include "IOptionsPage.h" -//#include "Application/IWalletUiItem.h" - namespace Ui { class ConnectionOptionsFrame; } diff --git a/src/connectionoptionsframe.ui b/src/connectionoptionsframe.ui index 382dbb3..5d049b2 100644 --- a/src/connectionoptionsframe.ui +++ b/src/connectionoptionsframe.ui @@ -7,7 +7,7 @@ 0 0 424 - 88 + 115 @@ -37,165 +37,123 @@ - + + + 10 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 22 + 20 + + + + + + + + Host: + + + + + + + true + + + 127.0.0.1 + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 15 + 20 + + + + + + + + Port: + + + + + + + true + + + 1 + + + 65535 + + + 8070 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + - + 0 0 - 0 - 70 + 406 + 36 - - - 16777215 - 70 - + + Wallet will connect to Bytecoin node in the local or global network. Please specify IP address or domain name and the port. + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + 0 - - - 3 - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 10 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 22 - 20 - - - - - - - - Host: - - - - - - - true - - - 127.0.0.1 - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 15 - 20 - - - - - - - - Port: - - - - - - - true - - - 1 - - - 65535 - - - 8070 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - 0 - 0 - - - - - 406 - 36 - - - - Wallet will connect to Bytecoin node in the local or global network. Please specify IP address or domain name and the port. - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - 0 - - - - diff --git a/src/connectselectiondialog.cpp b/src/connectselectiondialog.cpp index 363b9c5..9fba4e5 100644 --- a/src/connectselectiondialog.cpp +++ b/src/connectselectiondialog.cpp @@ -12,17 +12,12 @@ ConnectSelectionDialog::ConnectSelectionDialog(QWidget *parent) : { ui->setupUi(this); ui->buttonBox->button(QDialogButtonBox::Ok)-> setEnabled(false); -// QFont font = ui->label->font(); -// font.setBold(true); -// ui->label->setFont(font); -// ui->label->setText(reason); connect(ui->m_connectionOptionsFrame, &ConnectionOptionsFrame::disableAcceptButtonSignal, [this](bool disable) { ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!disable); }); ui->m_connectionOptionsFrame->load(); -// setWindowTitle("Bytecoin"); } ConnectSelectionDialog::~ConnectSelectionDialog() diff --git a/src/crashdialog.cpp b/src/crashdialog.cpp index 8fddcee..8f39211 100644 --- a/src/crashdialog.cpp +++ b/src/crashdialog.cpp @@ -10,7 +10,6 @@ CrashDialog::CrashDialog(QWidget *parent) , mainWindow_(nullptr) { ui->setupUi(this); -// setWindowTitle("Bytecoin"); } CrashDialog::~CrashDialog() @@ -39,7 +38,6 @@ QString CrashDialog::getPassword() const void CrashDialog::showDaemonConsole() { -// consoleDlg_.show(); if (mainWindow_) mainWindow_->showLog(); } diff --git a/src/importkeydialog.cpp b/src/importkeydialog.cpp new file mode 100644 index 0000000..6211899 --- /dev/null +++ b/src/importkeydialog.cpp @@ -0,0 +1,55 @@ +#include + +#include "importkeydialog.h" +#include "ui_importkeydialog.h" + +namespace WalletGUI +{ + +ImportKeyDialog::ImportKeyDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::ImportKeyDialog) +{ + ui->setupUi(this); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); +} + +ImportKeyDialog::~ImportKeyDialog() +{ + ui->keyEdit->setText(QString{1000, '0'}); + ui->keyEdit->clear(); + delete ui; +} + +QByteArray ImportKeyDialog::getKey() const +{ + return QByteArray::fromHex(ui->keyEdit->toPlainText().toLatin1()); +} + +void ImportKeyDialog::loadKey() +{ + const QString filePath = + QFileDialog::getOpenFileName( + this, + tr("Load key from..."), + QDir::homePath(), + tr("Key file (*.*)")); + + if (filePath.isEmpty()) + return; + + QFile keyFile(filePath); + if (!keyFile.open(QIODevice::ReadOnly)) + return; + + key_ = keyFile.readAll(); + keyFile.close(); + ui->keyEdit->setPlainText(key_.toHex().toUpper()); +} + +void ImportKeyDialog::keyChanged() +{ + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ui->keyEdit->toPlainText().length() == 256); +} + +} diff --git a/src/importkeydialog.h b/src/importkeydialog.h new file mode 100644 index 0000000..4593886 --- /dev/null +++ b/src/importkeydialog.h @@ -0,0 +1,34 @@ +#ifndef IMPORTKEYDIALOG_H +#define IMPORTKEYDIALOG_H + +#include + +namespace Ui { +class ImportKeyDialog; +} + +namespace WalletGUI +{ + +class ImportKeyDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImportKeyDialog(QWidget *parent = 0); + ~ImportKeyDialog(); + + QByteArray getKey() const; + +private slots: + void loadKey(); + void keyChanged(); + +private: + Ui::ImportKeyDialog *ui; + QByteArray key_; +}; + +} + +#endif // IMPORTKEYDIALOG_H diff --git a/src/importkeydialog.ui b/src/importkeydialog.ui new file mode 100644 index 0000000..d5463cf --- /dev/null +++ b/src/importkeydialog.ui @@ -0,0 +1,131 @@ + + + ImportKeyDialog + + + + 0 + 0 + 366 + 133 + + + + Import key + + + + + + QFrame::NoFrame + + + + + + + + + Load from file + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + ImportKeyDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ImportKeyDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + loadButton + clicked() + ImportKeyDialog + loadKey() + + + 56 + 109 + + + 182 + 66 + + + + + keyEdit + textChanged() + ImportKeyDialog + keyChanged() + + + 182 + 49 + + + 182 + 66 + + + + + + keyChanged() + loadKey() + + diff --git a/src/initialdialog.cpp.autosave b/src/initialdialog.cpp.autosave deleted file mode 100644 index 5193282..0000000 --- a/src/initialdialog.cpp.autosave +++ /dev/null @@ -1,61 +0,0 @@ -#include - -#include "initialdialog.h" -#include "settings.h" -#include "connectselectiondialog.h" -#include "ui_initialdialog.h" - -namespace WalletGUI { - -InitialDialog::InitialDialog(const QString& reason, QWidget *parent) - : QDialog(parent) - , ui(new Ui::InitialDialog) -{ - ui->setupUi(this); - ui->m_reasonLabel->setText(reason); -} - -InitialDialog::~InitialDialog() -{ - delete ui; -} - -void InitialDialog::createWallet() -{ - const QString fileName = QFileDialog::getSaveFileName( - this, - tr("Create wallet file"), - QString(), - tr("Wallet files (*.wallet);;All files (*)")); - if (fileName.isEmpty()) - return; - - emit runBuiltinWalletdSignal(fileName, true); - QDialog::accept(); -} - -void InitialDialog::openWallet() -{ - const QString fileName = QFileDialog::getOpenFileName( - this, - tr("Open wallet file"), - QString(), - tr("Wallet files (*.wallet);;All files (*)")); - if (fileName.isEmpty()) - return; - - emit runBuiltinWalletdSignal(fileName, false); - QDialog::accept(); -} - -void InitialDialog::remoteWallet() -{ - ConnectSelectionDialog dlg(this); - if (dlg.exec() != QDialog::Accepted) - return; - - emit connectToRemoteWalletdSignal(); - QDialog::accept(); -} - -} diff --git a/src/logframe.cpp b/src/logframe.cpp index d2286c0..47fa88a 100644 --- a/src/logframe.cpp +++ b/src/logframe.cpp @@ -69,15 +69,6 @@ void LogFrame::addNetworkMessage(const QString& data) void LogFrame::print(const QString& data, const QColor& color) { QMutexLocker locker(mutex_); -// const int lines = ui->textEdit->document()->blockCount(); -// if (lines > MAX_LINES) -// { -// ui->textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); -// for (int i = lines - MAX_LINES; i > 0; --i) -// ui->textEdit->moveCursor(QTextCursor::Down, QTextCursor::KeepAnchor); -// ui->textEdit->textCursor().removeSelectedText(); -// } -// ui->textEdit->moveCursor(QTextCursor::End); insertText(data, color); if (autoScroll_) scrollDown(); @@ -85,9 +76,7 @@ void LogFrame::print(const QString& data, const QColor& color) void LogFrame::insertText(const QString& data, const QColor& color) { -// ui->textEdit->moveCursor(QTextCursor::End); ui->textEdit->setTextColor(color.isValid() ? color : defaultColor_); -// ui->textEdit->insertPlainText(data); ui->textEdit->append(data); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b0e4026..96c4dd2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -34,15 +34,9 @@ #include "mainwindow.h" -//#include "Settings/Settings.h" #include "logger.h" #include "aboutdialog.h" -//#include "statusmodel.h" -//#include "historymodel.h" -//#include "addressesmodel.h" -//#include "unspentsmodel.h" #include "walletmodel.h" -#include "optionsdialog.h" #include "settings.h" #include "common.h" #include "JsonRpc/JsonRpcClient.h" @@ -69,8 +63,6 @@ const char REPORT_ISSUE_URL[] = "https://bytecoin.org/contact"; const char BUTTON_STYLE_SHEET[] = "QPushButton {border: none;}" "QPushButton:checked {background-color: #EE4486; color: #FFFFFF}"; -// "QPushButton:pressed {background-color: #EE4486;}"; - } MainWindow::MainWindow( @@ -94,7 +86,6 @@ MainWindow::MainWindow( setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, this->size(), qApp->desktop()->availableGeometry())); setWindowIcon(QIcon(":images/bytecoin_lin")); -// setTitle(); clearTitle(); m_ui->m_overviewButton->setStyleSheet(BUTTON_STYLE_SHEET); @@ -311,6 +302,11 @@ void MainWindow::encryptWallet() emit encryptWalletSignal(this); } +void MainWindow::importKeys() +{ + emit importKeysSignal(this); +} + void MainWindow::communityForumTriggered() { QDesktopServices::openUrl(QUrl::fromUserInput(COMMUNITY_FORUM_URL)); @@ -341,8 +337,8 @@ void MainWindow::addDaemonError(const QString& msg) void MainWindow::showLog() { m_ui->m_logButton->setChecked(true); - activateWindow(); - raise(); +// activateWindow(); +// raise(); } void MainWindow::setTitle() @@ -354,7 +350,6 @@ void MainWindow::setTitle() #ifdef Q_OS_MAC setWindowFilePath(fileName); #else -// setWindowTitle(fileName + tr(" — Bytecoin Wallet %1-%2-%3").arg(Settings::getVersion()).arg(Settings::getVersionSuffix()).arg(Settings::getRevision())); setWindowTitle(fileName); #endif } @@ -378,7 +373,6 @@ void MainWindow::setConnectedState() m_ui->m_overviewButton->click(); setTitle(); -// clearTitle(); #ifdef Q_OS_MAC if (Settings::instance().getConnectionMethod() == ConnectionMethod::BUILTIN) setWindowFilePath(Settings::instance().getWalletFile()); @@ -403,7 +397,6 @@ void MainWindow::setDisconnectedState() m_ui->m_changePasswordAction->setEnabled(false); clearTitle(); -// setTitle(); #ifdef Q_OS_MAC setWindowFilePath(QString()); #endif @@ -446,6 +439,4 @@ void MainWindow::packetReceived(const QByteArray& data) m_ui->m_logFrame->addNetworkMessage(QString("<-- ") + QString::fromUtf8(data) + '\n'); } - - } diff --git a/src/mainwindow.h b/src/mainwindow.h index c1de6de..4e05aeb 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -78,6 +78,7 @@ class MainWindow : public QMainWindow Q_SLOT void packetSent(const QByteArray& data); Q_SLOT void packetReceived(const QByteArray& data); + Q_SLOT void importKeys(); protected: void changeEvent(QEvent* event) override; @@ -112,8 +113,6 @@ class MainWindow : public QMainWindow Q_SLOT void about(); Q_SLOT void copyAddress(); Q_SLOT void copyBalance(); -// Q_SLOT void showPreferences(); -// Q_SLOT void showConsole(); Q_SLOT void communityForumTriggered(); Q_SLOT void reportIssueTriggered(); @@ -122,12 +121,6 @@ class MainWindow : public QMainWindow Q_SLOT void remoteWallet(); Q_SLOT void encryptWallet(); -// Q_SLOT void daemonOutputReady(); -// Q_SLOT void daemonErrorReady(); -// Q_SLOT void daemonErrorOccured(QProcess::ProcessError error); - -//Q_SIGNALS: -// void reinitCryptoNoteAdapterSignal(); signals: void createTxSignal(const RpcApi::CreateTransaction::Request& req, QPrivateSignal); void sendTxSignal(const RpcApi::SendTransaction::Request& req, QPrivateSignal); @@ -137,6 +130,7 @@ class MainWindow : public QMainWindow void openWalletSignal(QWidget* parent); void remoteWalletSignal(QWidget* parent); void encryptWalletSignal(QWidget* parent); + void importKeysSignal(QWidget* parent); }; } diff --git a/src/mainwindow.ui b/src/mainwindow.ui index d191a74..1584b1c 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -669,10 +669,11 @@ &Wallet + - + @@ -707,7 +708,7 @@ true - &Create wallet + &Create new wallet @@ -762,6 +763,11 @@ Open data &folder + + + Create wallet from keys + + @@ -1036,11 +1042,24 @@ + + m_importKeysAction + triggered() + MainWindow + importKeys() + + + -1 + -1 + + + 636 + 411 + + + - openWalletSignal() - createWalletSignal() - remoteWalletSignal() aboutQt() showLog() about() @@ -1056,6 +1075,7 @@ remoteWallet() copiedToClipboard() openDataFolder() + importKeys() diff --git a/src/miningoverviewframe.cpp b/src/miningoverviewframe.cpp index b790933..bb0e611 100644 --- a/src/miningoverviewframe.cpp +++ b/src/miningoverviewframe.cpp @@ -75,22 +75,14 @@ void MiningOverviewFrame::startMiningClicked() void MiningOverviewFrame::miningStarted() { -// ui->m_startMiningButton->setText(tr("Stop mining")); ui->m_miningStateLabel->setText(tr("ON")); started_ = true; -// ui->m_miningStateLabel->setProperty("miningRunning", true); -// ui->m_miningStateLabel->style()->unpolish(m_ui->m_miningStateLabel); -// ui->m_miningStateLabel->style()->polish(m_ui->m_miningStateLabel); } void MiningOverviewFrame::miningStopped() { -// ui->m_startMiningButton->setText(tr("Start mining")); ui->m_miningStateLabel->setText(tr("OFF")); started_ = false; -// ui->m_miningStateLabel->setProperty("miningRunning", true); -// ui->m_miningStateLabel->style()->unpolish(m_ui->m_miningStateLabel); -// ui->m_miningStateLabel->style()->polish(m_ui->m_miningStateLabel); } void MiningOverviewFrame::activeMinerChanged(quintptr _minerIndex) diff --git a/src/miningoverviewframe.h b/src/miningoverviewframe.h index 444b2f2..7f58077 100644 --- a/src/miningoverviewframe.h +++ b/src/miningoverviewframe.h @@ -37,9 +37,7 @@ class MiningOverviewFrame : public QFrame Ui::MiningOverviewFrame *ui; MiningManager* miningManager_; -// WalletModel* walletModel_; QDataWidgetMapper* miningMapper_; -// QDataWidgetMapper* stateMapper_; bool started_; }; diff --git a/src/okbutton.cpp b/src/okbutton.cpp index dacd5ea..bc7438b 100644 --- a/src/okbutton.cpp +++ b/src/okbutton.cpp @@ -16,8 +16,6 @@ // along with Bytecoin. If not, see . #include "okbutton.h" -//#include "Settings/Settings.h" -//#include "Style/Style.h" namespace WalletGUI { diff --git a/src/optionsdialog.cpp b/src/optionsdialog.cpp deleted file mode 100644 index 62b33a1..0000000 --- a/src/optionsdialog.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include -#include - -#include "optionsdialog.h" -//#include "Application/IWalletUiItem.h" -//#include "Settings/Settings.h" -//#include "IOptionsPage.h" -//#include "Style/Style.h" - -#include "ui_optionsdialog.h" - -namespace WalletGUI -{ - -namespace { - -const char OPTIONS_DIALOG_STYLE_SHEET_TEMPLATE[] = - "WalletGui--OptionsDialog {" - "min-height: 563px;" - "max-height: 563px;" - "background-color: %backgroundColorGray%;" - "}" - - "WalletGui--OptionsDialog > #m_buttonFrame {" - "background: #ffffff;" - "}" - - "WalletGui--OptionsDialog > #m_buttonFrame > #m_warningLabel {" - "font-size: %fontSizeLarge%;" - "font-weight: bold;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget {" - "border: none;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget::pane {" - "border: none;" - "border-top: 1px solid %borderColorDark%;" - "top: -1px;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget::tab-bar {" - "alignment: center;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget QTabBar::tab {" - "font-size: %fontSizeLarge%;" - "font-weight: bold;" - "min-width: 165px;" - "max-width: 165px;" - "min-height: 30px;" - "max-height: 30px;" - "border: 1px solid %borderColorDark%;" - "margin-left: 2px;" - "margin-right: 2px;" - "border-top-left-radius: 2px;" - "border-top-right-radius: 2px;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget QTabBar::tab:selected {" - "background: #ffffff;" - "border: 1px solid %borderColorDark%;" - "border-bottom: 1px solid #ffffff;" - "}" - - "WalletGui--OptionsDialog > #m_optionsTabWidget QTabBar::tab:!selected {" - "background: %backgroundColorGray%;" - "border: 1px solid %borderColorDark%;" - "}"; - -} - -OptionsDialog::OptionsDialog(QWidget* parent) - : QDialog(parent, static_cast(Qt::WindowCloseButtonHint)) - , m_ui(new Ui::OptionsDialog) - , needToRestart_(false) -{ - m_ui->setupUi(this); - m_ui->m_warningLabel->hide(); - - connectionOptionsFrame_ = dynamic_cast(m_ui->m_optionsTabWidget->widget(0)); - Q_ASSERT(connectionOptionsFrame_ != nullptr); - - connect(connectionOptionsFrame_, SIGNAL(disableAcceptButtonSignal(bool)), this, SLOT(disableAcceptButton(bool))); - connect(connectionOptionsFrame_, SIGNAL(showRestartWarningSignal(bool)), this, SLOT(showRestartWarning(bool))); - connectionOptionsFrame_->load(); - -// for (int i = 0; i < m_ui->m_optionsTabWidget->count(); ++i) -// { -// IOptionsPage* page = dynamic_cast(m_ui->m_optionsTabWidget->widget(i)); -// IWalletUiItem* uiItem = dynamic_cast(m_ui->m_optionsTabWidget->widget(i)); -// QObject* pageObject = qobject_cast(m_ui->m_optionsTabWidget->widget(i)); -// connect(pageObject, SIGNAL(disableAcceptButtonSignal(bool)), this, SLOT(disableAcceptButton(bool))); -// connect(pageObject, SIGNAL(showRestartWarningSignal(bool)), this, SLOT(showRestartWarning(bool))); -// uiItem->setCryptoNoteAdapter(_cryptoNoteAdapter); -// uiItem->setDonationManager(_donationManager); -// uiItem->setOptimizationManager(_optimizationManager); -// uiItem->setAddressBookModel(_addressBookModel); -// page->load(); -// m_ui->m_optionsTabWidget->setTabEnabled(i, page->isEnabled()); -// } - -// setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(OPTIONS_DIALOG_STYLE_SHEET_TEMPLATE)); -} - -OptionsDialog::~OptionsDialog() -{} - -bool OptionsDialog::needToRestartApplication() const -{ - return needToRestart_; -} - -void OptionsDialog::accept() -{ - connectionOptionsFrame_->save(); - QDialog::accept(); -} - -void OptionsDialog::showRestartWarning(bool /*show*/) -{ - needToRestart_ = false; -// for (int i = 0; i < m_ui->m_optionsTabWidget->count(); ++i) -// { -// IOptionsPage* page = dynamic_cast(m_ui->m_optionsTabWidget->widget(i)); -// m_needToRestart |= page->needToRestartApplication(); -// } - -// needToRestart_ |= connectionOptionsFrame_->needToRestartApplication(); - m_ui->m_warningLabel->setVisible(needToRestart_); -} - -void OptionsDialog::disableAcceptButton(bool /*disable*/) -{ - bool canAccept = true; - - canAccept &= connectionOptionsFrame_->canAccept(); - m_ui->m_okButton->setEnabled(canAccept); -} - -//void WalletGui::OptionsDialog::setDonationAddress(const QString& _label, const QString& _address) -//{ -// QVariantMap params; -// params.insert("label", _label); -// params.insert("address", _address); -// m_ui->m_donationTab->setData(params); -// int donationTabIndex = m_ui->m_optionsTabWidget->indexOf(m_ui->m_donationTab); -// m_ui->m_optionsTabWidget->setCurrentIndex(donationTabIndex); -//} - -} diff --git a/src/optionsdialog.h b/src/optionsdialog.h deleted file mode 100644 index 79f5aa0..0000000 --- a/src/optionsdialog.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#pragma once - -#include - -class QAbstractItemModel; - -namespace Ui { - class OptionsDialog; -} - -namespace WalletGUI -{ - -class ConnectionOptionsFrame; - -class OptionsDialog : public QDialog -{ - Q_OBJECT - Q_DISABLE_COPY(OptionsDialog) - -public: - OptionsDialog(QWidget* parent); - ~OptionsDialog(); - - bool needToRestartApplication() const; - - Q_SLOT void accept() override; - -private: - QScopedPointer m_ui; - ConnectionOptionsFrame* connectionOptionsFrame_; - bool needToRestart_; - - Q_SLOT void showRestartWarning(bool show); - Q_SLOT void disableAcceptButton(bool disable); -}; - -} diff --git a/src/overviewframe.cpp b/src/overviewframe.cpp index 0133598..26a8b14 100644 --- a/src/overviewframe.cpp +++ b/src/overviewframe.cpp @@ -21,7 +21,6 @@ #include #include "overviewframe.h" -//#include "historymodel.h" #include "walletmodel.h" #include "ui_overviewframe.h" @@ -144,47 +143,13 @@ void OverviewFrame::setMinerModel(QAbstractItemModel* model) m_ui->m_miningOverviewFrame->setMinerModel(model); } -//void OverviewFrame::setSortedTransactionsModel(QAbstractItemModel* model) -//{ -// RecentTransactionsModel* recentTransactionsModel = new RecentTransactionsModel(model, this); -// int newTransactionColumn = TransactionsModel::findProxyColumn(recentTransactionsModel, TransactionsModel::COLUMN_NEW_TRANSACTION); -// int amountColumn = TransactionsModel::findProxyColumn(recentTransactionsModel, TransactionsModel::COLUMN_AMOUNT); -// int hashColumn = TransactionsModel::findProxyColumn(recentTransactionsModel, TransactionsModel::COLUMN_HASH); -// int timeColumn = TransactionsModel::findProxyColumn(recentTransactionsModel, TransactionsModel::COLUMN_TIME); -// m_ui->m_recentTransactionsView->setModel(recentTransactionsModel); -// m_ui->m_recentTransactionsView->setLinkLikeColumnSet(QSet() << hashColumn); -// m_ui->m_recentTransactionsView->setHorizontalHeader(new TransactionsHeaderView(this)); -// m_ui->m_recentTransactionsView->setItemDelegateForColumn(newTransactionColumn, new NewTransactionDelegate(this)); -// m_ui->m_recentTransactionsView->setItemDelegateForColumn(timeColumn, new TransactionsTimeDelegate(this)); -// m_ui->m_recentTransactionsView->setItemDelegateForColumn(amountColumn, new TransactionsAmountDelegate(true, this)); -// m_ui->m_recentTransactionsView->horizontalHeader()->setSectionResizeMode(newTransactionColumn, QHeaderView::Fixed); -// m_ui->m_recentTransactionsView->horizontalHeader()->setSectionResizeMode(timeColumn, QHeaderView::Fixed); -// m_ui->m_recentTransactionsView->horizontalHeader()->setSectionResizeMode(amountColumn, QHeaderView::Fixed); -// m_ui->m_recentTransactionsView->horizontalHeader()->setSectionResizeMode(hashColumn, QHeaderView::Stretch); -// m_ui->m_recentTransactionsView->horizontalHeader()->resizeSection(newTransactionColumn, 6); -// m_ui->m_recentTransactionsView->horizontalHeader()->resizeSection(timeColumn, 180); -// m_ui->m_recentTransactionsView->horizontalHeader()->resizeSection(amountColumn, 220); - -// connect(recentTransactionsModel, &QAbstractItemModel::rowsInserted, this, &OverviewFrame::rowsInserted); -//} - void OverviewFrame::rowsInserted(const QModelIndex& /*parent*/, int /*first*/, int /*last*/) { -// if (first != last) -// return; - -// QModelIndex index = m_ui->m_recentTransactionsView->model()->index(first, TransactionsModel::COLUMN_NEW_TRANSACTION); -// if (index.data(TransactionsModel::ROLE_NUMBER_OF_CONFIRMATIONS).value() == 0) -// m_ui->m_recentTransactionsView->openPersistentEditor(index); } void OverviewFrame::setMainWindow(QWidget* mainWindow) { m_mainWindow = mainWindow; -// QList buttonList = m_mainWindow->findChildren("m_transactionsButton"); -// Q_ASSERT(!buttonList.isEmpty()); -// connect(m_ui->m_allTransactionsButton, &WalletTinyLinkLikeButton::clicked, buttonList.first(), &QPushButton::click); -// m_ui->m_overviewHeaderFrame->setMainWindow(m_mainWindow); } bool OverviewFrame::eventFilter(QObject* object, QEvent* event) diff --git a/src/overviewframe.h b/src/overviewframe.h index 7927861..7bb88f2 100644 --- a/src/overviewframe.h +++ b/src/overviewframe.h @@ -18,8 +18,6 @@ #pragma once #include -//#include "Application/IWalletUiItem.h" -//#include "Settings/Settings.h" class QAbstractItemModel; @@ -29,12 +27,11 @@ class OverviewFrame; namespace WalletGUI { -//class ICryptoNoteAdapter; class WalletModel; class MiningManager; class CopiedToolTip; -class OverviewFrame : public QFrame//, public IWalletUiItem, public ISettingsObserver +class OverviewFrame : public QFrame { Q_OBJECT Q_DISABLE_COPY(OverviewFrame) diff --git a/src/popup.cpp b/src/popup.cpp index 7baf483..1ce2cf9 100644 --- a/src/popup.cpp +++ b/src/popup.cpp @@ -5,23 +5,6 @@ namespace WalletGUI { -//ToolTipMessage::ToolTipMessage(QWidget *parent) : QWidget(parent){ -// QHBoxLayout *mainLay = new QHBoxLayout(this); -// mainLay->addWidget(messageText = new QLabel(this)); - -// this->setLayout(mainLay); - -// Qt::WindowFlags flags = Qt::ToolTip; -// flags |= Qt::WindowStaysOnTopHint; -// this->setWindowFlags(flags); -//} - -//void ToolTipMessage::setLabelText(const QString& text){ -// messageText->setText(text); -// this->setMaximumSize(messageText->size().width(), messageText->size().height()); -// QTimer::singleShot(3000, this, SLOT(deleteLater())); -//} - MagicToolTip::MagicToolTip(QWidget *parent) : QWidget(parent) , opacity_(0.) @@ -62,11 +45,9 @@ void MagicToolTip::paintEvent(QPaintEvent* /*event*/) roundedRect.setWidth(rect().width() - 10); roundedRect.setHeight(rect().height() - 10); -// painter.setBrush(QBrush(QColor(0,0,0,180))); painter.setBrush(QBrush(QColor(0xEE4486))); // TODO: make setter painter.setPen(Qt::NoPen); painter.drawRoundedRect(roundedRect, 7, 7); -// painter.drawRoundedRect(rect(), 5, 5); } void MagicToolTip::setToolTip(const QString &text) @@ -112,12 +93,6 @@ void MagicToolTip::hideAnimation() animation_.start(); } -//void PopUp::hide() -//{ -// if(getPopupOpacity() == 0.0) -// QWidget::hide(); -//} - void MagicToolTip::setOpacity(float value) { opacity_ = value; diff --git a/src/popup.h b/src/popup.h index 81f9806..77872f2 100644 --- a/src/popup.h +++ b/src/popup.h @@ -9,19 +9,6 @@ namespace WalletGUI { -//class ToolTipMessage : public QWidget -//{ -// Q_OBJECT - -//public: -// explicit ToolTipMessage(QWidget *parent = 0); -// void setLabelText(const QString& text); - -//private: -// QLabel *messageText; -//}; - - class MagicToolTip : public QWidget { Q_OBJECT diff --git a/src/QuestionDialog.cpp b/src/questiondialog.cpp similarity index 64% rename from src/QuestionDialog.cpp rename to src/questiondialog.cpp index ebc9006..02310cc 100644 --- a/src/QuestionDialog.cpp +++ b/src/questiondialog.cpp @@ -15,20 +15,23 @@ // You should have received a copy of the GNU Lesser General Public License // along with Bytecoin. If not, see . -#include "QuestionDialog.h" +#include "questiondialog.h" -#include "ui_QuestionDialog.h" +#include "ui_questiondialog.h" -namespace WalletGUI { +namespace WalletGUI +{ -QuestionDialog::QuestionDialog(const QString& _title, const QString& _text, QWidget* _parent) : QDialog(_parent, static_cast(Qt::WindowCloseButtonHint)), - m_ui(new Ui::QuestionDialog) { - m_ui->setupUi(this); - setWindowTitle(_title); - m_ui->m_questionLabel->setText(_text); +QuestionDialog::QuestionDialog(const QString& title, const QString& text, QWidget* parent) + : QDialog(parent, static_cast(Qt::WindowCloseButtonHint)) + , ui(new Ui::QuestionDialog) +{ + ui->setupUi(this); + setWindowTitle(title); + ui->questionLabel->setText(text); } -QuestionDialog::~QuestionDialog() { -} +QuestionDialog::~QuestionDialog() +{} } diff --git a/src/QuestionDialog.h b/src/questiondialog.h similarity index 76% rename from src/QuestionDialog.h rename to src/questiondialog.h index 5a4d486..5789e3e 100644 --- a/src/QuestionDialog.h +++ b/src/questiondialog.h @@ -23,18 +23,20 @@ namespace Ui { class QuestionDialog; } -namespace WalletGUI { +namespace WalletGUI +{ -class QuestionDialog : public QDialog { - Q_OBJECT - Q_DISABLE_COPY(QuestionDialog) +class QuestionDialog : public QDialog +{ + Q_OBJECT + Q_DISABLE_COPY(QuestionDialog) public: - QuestionDialog(const QString& _title, const QString& _text, QWidget* _parent); - ~QuestionDialog(); + QuestionDialog(const QString& title, const QString& text, QWidget* parent); + ~QuestionDialog(); private: - QScopedPointer m_ui; + QScopedPointer ui; }; } diff --git a/src/QuestionDialog.ui b/src/questiondialog.ui similarity index 90% rename from src/QuestionDialog.ui rename to src/questiondialog.ui index 8f44ec2..868a46f 100644 --- a/src/QuestionDialog.ui +++ b/src/questiondialog.ui @@ -33,7 +33,7 @@ - + @@ -55,14 +55,14 @@ - + No - + Yes @@ -75,7 +75,7 @@ - m_okButton + okButton clicked() QuestionDialog accept() @@ -91,7 +91,7 @@ - m_cancelButton + cancelButton clicked() QuestionDialog reject() diff --git a/src/sendframe.cpp b/src/sendframe.cpp index 22fd30d..692a25d 100644 --- a/src/sendframe.cpp +++ b/src/sendframe.cpp @@ -19,19 +19,7 @@ #include #include -//#include - #include "sendframe.h" -//#include "Settings/Settings.h" -//#include "Common/QuestionDialog.h" -//#include "ICryptoNoteAdapter.h" -//#include "IDonationManager.h" -//#include "INodeAdapter.h" -//#include "IWallet.h" -//#include "Models/AddressBookModel.h" -//#include "Models/WalletStateModel.h" -//#include "SendGlassFrame.h" -//#include "Style/Style.h" #include "transferframe.h" #include "walletmodel.h" #include "mainwindow.h" @@ -89,14 +77,6 @@ const char MIXIN_SLIDER_STYLE_SHEET_TEMPLATE[] = bool isValidPaymentId(const QString& /*paymentIdString*/) { -// if (!paymentIdString.trimmed().isEmpty() && -// (paymentIdString.trimmed().size() != sizeof(Crypto::Hash) * 2 || -// QByteArray::fromHex(paymentIdString.toLatin1()).size() != sizeof(Crypto::Hash) || -// QByteArray::fromHex(paymentIdString.toLatin1()).toHex().toLower() != paymentIdString.trimmed().toLower())) -// { -// return false; -// } - return true; } @@ -142,17 +122,6 @@ void SendFrame::addRecipient(const QString& address, const QString& label) } } -//void SendFrame::setMainWindow(QWidget* mainWindow) -//{ -// m_mainWindow = mainWindow; -// for (auto& transfer : m_transfers) -// transfer->setMainWindow(mainWindow); - -// QList buttonList = m_mainWindow->findChildren("m_transactionsButton"); -// Q_ASSERT(!buttonList.isEmpty()); -// connect(this, &SendFrame::showTransactionsFrameSignal, buttonList.first(), &QPushButton::click); -//} - void SendFrame::setMainWindow(MainWindow* mainWindow) { m_mainWindow = mainWindow; @@ -261,20 +230,9 @@ void SendFrame::sendClicked() Q_ASSERT(walletModel_ != nullptr); m_ui->m_sendButton->setEnabled(false); - m_ui->m_sendButton->setText(tr("Sending...")); + m_ui->m_sendButton->setText(tr("Checking...")); quint64 transferSum = 0; -// const QString feeStr = m_ui->m_feeSpin->cleanText(); -// const double dfee = m_ui->m_feeSpin->value(); -// if (dfee < 0) -// { -// setFeeFormatError(true); -// m_ui->m_sendScrollarea->ensureWidgetVisible(m_ui->m_feeSpin); -// return; -// } -// const quint64 fee = convertAmountFromHumanReadable(dfee); - -// const qint64 fee = m_cryptoNoteAdapter->parseAmount(m_ui->m_feeSpin->cleanText()); QList trs; for (TransferFrame* transfer : m_transfers) { @@ -284,15 +242,7 @@ void SendFrame::sendClicked() addressBookManager_->findAddressByLabel(label) == INVALID_ADDRESS_INDEX) addressBookManager_->addAddress(label, address); -// if (!m_cryptoNoteAdapter->isValidAddress(address)) -// { -// transfer->setAddressError(); -// m_ui->m_sendScrollarea->ensureWidgetVisible(transfer); -// return; -// } - const double damount = transfer->getAmountString().toDouble(); -// qint64 amount = m_cryptoNoteAdapter->parseAmount(transfer->getAmountString()); if (damount <= 0) { transfer->setAmountFormatError(true); @@ -317,18 +267,7 @@ void SendFrame::sendClicked() tx.anonymity = m_ui->m_mixinSlider->value(); tx.unlock_time = 0; - - emit createTxSignal(tx, getFeeFromSlider(m_ui->m_feeSlider->value())/*m_ui->m_feeValue->text().toULongLong()*/); - -// RpcApi::CreateTransaction::Request req; -// req.any_spend_address = true; -// req.send_immediately = false; -// req.transaction = tx; -// req.change_address = m_mainWindow->getAddress(); -// req.confirmed_height_or_depth = -static_cast(CONFIRMATIONS) - 1; -// req.fee_per_byte = fee; - -// m_mainWindow->createTransaction(req); + emit createTxSignal(tx, getFeeFromSlider(m_ui->m_feeSlider->value())); } void SendFrame::mixinValueChanged(int value) @@ -412,26 +351,6 @@ void SendFrame::setMixinError(bool error) void SendFrame::setFeeFormatError(bool /*error*/) { -// m_ui->m_feeSpin->setProperty("errorState", error); -// if (error) -// { -// m_ui->m_feeTextLabel->setText(tr("WRONG FEE")); -// connect(m_ui->m_feeSpin, static_cast(&QDoubleSpinBox::valueChanged), this, [this](double fee) -// { -// if (fee >= 0) -// setFeeFormatError(false); -// }, Qt::UniqueConnection); -// } -// else -// m_ui->m_feeTextLabel->setText(tr("FEE")); - -// m_ui->m_feeSpin->style()->unpolish(m_ui->m_feeSpin); -// m_ui->m_feeSpin->style()->polish(m_ui->m_feeSpin); -// m_ui->m_feeSpin->update(); - -// m_ui->m_feeTextLabel->style()->unpolish(m_ui->m_feeTextLabel); -// m_ui->m_feeTextLabel->style()->polish(m_ui->m_feeTextLabel); -// m_ui->m_feeTextLabel->update(); } void SendFrame::updateMixinSliderStyleSheet() diff --git a/src/sendframe.h b/src/sendframe.h index 182ec2b..466cb15 100644 --- a/src/sendframe.h +++ b/src/sendframe.h @@ -20,12 +20,6 @@ #include #include -//#include "Application/IWalletUiItem.h" -//#include "IAddressBookManager.h" -//#include "IApplicationEventHandler.h" -//#include "ICryptoNoteAdapter.h" -//#include "IWalletAdapter.h" - class QAbstractItemModel; namespace Ui { @@ -38,8 +32,6 @@ struct Transaction; namespace WalletGUI { -//class ICryptoNoteAdapter; -//class SendGlassFrame; class TransferFrame; class WalletModel; class MainWindow; @@ -55,7 +47,6 @@ class SendFrame : public QFrame ~SendFrame(); void addRecipient(const QString& address, const QString& label = QString()); - // void setMainWindow(QWidget* mainWindow); void setWalletModel(WalletModel* model); void setMainWindow(MainWindow* mainWindow); void setAddressBookModel(QAbstractItemModel* model); @@ -66,14 +57,12 @@ class SendFrame : public QFrame private: QScopedPointer m_ui; - // QWidget* m_mainWindow; MainWindow* m_mainWindow; QList m_transfers; WalletModel* walletModel_; QAbstractItemModel* addressBookModel_; AddressBookManager* addressBookManager_; - // void processTranactionSendStatus(IWalletAdapter::SendTransactionStatus status); void setPaymentIdError(bool error); void setMixinError(bool error); void setFeeFormatError(bool error); diff --git a/src/settings.cpp b/src/settings.cpp index 83dfd4b..a012829 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -28,7 +28,7 @@ constexpr char LOCAL_HOST[] = "127.0.0.1"; constexpr char VERSION[] = "2.0.0"; constexpr char VERSION_SUFFIX[] = "beta"; -constexpr char REVISION[] = "20180206"; +constexpr char REVISION[] = "20180219"; #if defined(Q_OS_LINUX) constexpr char DEFAULT_WORK_DIR[] = ".bytecoin"; @@ -63,8 +63,6 @@ int getCoreCount() } Settings::Settings() -// : settings_("bytecoin.org", "bytecoin", this) -// : settings_(getDefaultWorkDir().absoluteFilePath("config.json"), QSettings::registerFormat("json", readJsonFile, writeJsonFile)) { const QSettings::Format jsonFormat = QSettings::registerFormat("json", readJsonFile, writeJsonFile); QSettings::setDefaultFormat(jsonFormat); @@ -72,7 +70,6 @@ Settings::Settings() const QString jsonFile = getDefaultWorkDir().absoluteFilePath("bytecoin-gui.config"); settings_.reset(new QSettings(jsonFile, jsonFormat)); -// QSettings settings("test.json", QSettings::registerFormat("json", readJsonFile, writeJsonFile)); } Settings& Settings::instance() @@ -324,12 +321,6 @@ void Settings::restoreDefaultPoolList() QStringList Settings::getStringList(const QString& key, const QVariant& defaultValue) const { -// QStringList result; -// const QVariantList vpoolList = settings_->value(key, defaultValue).toList(); -// for (const QVariant& vpool : vpoolList) -// result << vpool.toString(); -// return result; - return settings_->value(key, defaultValue).value(); } diff --git a/src/statusbar.cpp b/src/statusbar.cpp index e134a30..d127a50 100644 --- a/src/statusbar.cpp +++ b/src/statusbar.cpp @@ -146,117 +146,6 @@ void WalletStatusBar::setWalletModel(WalletModel* model) connect(walletModel_, &QAbstractItemModel::dataChanged, this, &WalletStatusBar::nodeStateChanged); } -//void WalletStatusBar::updateStyle() -//{ -// if (m_syncMovie->state() == QMovie::Running) -// m_syncMovie->stop(); - -// m_syncMovie->setFileName(Settings::instance().getCurrentStyle().getWalletSyncGifFile()); -// if (walletAdapter->isOpen()) -// { -// updateEncryptedState(walletAdapter->isEncrypted()); -// updateSyncState(m_walletIsSynchronized); -// } - -// setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(STATUS_BAR_STYLE_SHEET_TEMPLATE)); -//} - -//void WalletStatusBar::walletOpened() -//{ -// showMessage(tr("Wallet opened"), TEMP_MESSAGE_DURATION); -// m_encryptionStatusIconLabel->show(); -// m_syncStatusIconLabel->show(); -//// updateEncryptedState(m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->isEncrypted()); -// updateSyncState(true); -//} - -//void WalletStatusBar::walletOpenError(int initStatus) -//{ -// m_walletIsSynchronized = false; -//} - -//void WalletStatusBar::walletClosed() -//{ -// if (m_checkSyncStateTimerId != -1) { -// killTimer(m_checkSyncStateTimerId); -// m_checkSyncStateTimerId = -1; -// } - -// m_syncMovie->stop(); -// m_encryptionStatusIconLabel->hide(); -// m_syncStatusIconLabel->hide(); -// showMessage(tr("Wallet closed")); -//} - -//void WalletStatusBar::passwordChanged() { -// showMessage(tr("Password changed"), TEMP_MESSAGE_DURATION); -// updateEncryptedState(m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->isEncrypted()); -//} - -//void WalletStatusBar::synchronizationProgressUpdated(quint32 _current, quint32 _total) { -// if (m_checkSyncStateTimerId != -1) { -// killTimer(m_checkSyncStateTimerId); -// m_checkSyncStateTimerId = -1; -// } - -// quint64 currentDateTime = QDateTime::currentDateTimeUtc().toMSecsSinceEpoch() / 1000; -// quint64 lastBlockTimestamp = m_nodeStateModel->index(0, NodeStateModel::COLUMN_LAST_LOCAL_BLOCK_TIMESTAMP).data(NodeStateModel::ROLE_LAST_LOCAL_BLOCK_TIMESTAMP).value(); -// quint64 timeDiff = currentDateTime - lastBlockTimestamp; -// QString formattedTimeDiff = lastBlockTimestamp > 0 ? formatTimeDiff(timeDiff) : tr("unknown"); -// QString blockchainAge = lastBlockTimestamp > 0 ? QStringLiteral("%1 ago").arg(formattedTimeDiff) : QStringLiteral("%1").arg(formattedTimeDiff); - -// m_walletIsSynchronized = false; -// m_syncStatusLabel->setText(tr("Synchronization: %1/%2 (%3)").arg(_current).arg(_total).arg(blockchainAge)); -// updateSyncState(false); -//} - -//void WalletStatusBar::synchronizationCompleted() { -// if (m_checkSyncStateTimerId == -1) { -// m_checkSyncStateTimerId = startTimer(MSECS_IN_MINUTE); -// } - -// m_walletIsSynchronized = true; -// updateStatusDescription(); -// updateSyncState(true); -//} - -//void WalletStatusBar::balanceUpdated(quint64 _actualBalance, quint64 _pendingBalance) { -// // Do nothing -//} - -//void WalletStatusBar::externalTransactionCreated(quintptr _transactionId, const FullTransactionInfo& _transaction) { -// // Do nothing -//} - -//void WalletStatusBar::transactionUpdated(quintptr _transactionId, const FullTransactionInfo& _transaction) { -// // Do nothing -//} - -//void WalletStatusBar::cryptoNoteAdapterInitCompleted(int _status) { -// if (_status == 0) { -// m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->addObserver(this); -// if (m_cryptoNoteAdapter->getNodeAdapter()->getWalletAdapter()->isOpen()) { -// walletOpened(); -// } -// } -//} - -//void WalletStatusBar::cryptoNoteAdapterDeinitCompleted() { -// // Do nothing -//} - -//void WalletStatusBar::timerEvent(QTimerEvent* event) -//{ -// Q_ASSERT(jsonClient_ != nullptr); -// if (event->timerId() == getStatusTimerID_) -// { -// jsonClient_.sendGetStatus(); -// return; -// } - -// QStatusBar::timerEvent(event); -//} - void WalletStatusBar::nodeStateChanged(const QModelIndex& /*topLeft*/, const QModelIndex& /*bottomRight*/, const QVector& roles) { if (roles.contains(WalletModel::ROLE_TXPOOL_VERSION) || roles.contains(WalletModel::ROLE_TOP_BLOCK_HASH) || roles.contains(WalletModel::ROLE_PEER_COUNT_SUM)) @@ -291,11 +180,9 @@ void WalletStatusBar::updateStatusDescription() warningString.append(tr(" No network connection.")); const QString statusText = isSynchronized_ ? -// tr("Wallet synchronized. Top block height: %1 / Time (UTC): %2%3") tr("Wallet synchronized. Top block height: %1 / Received: %2 ago.%3") .arg(knownBlockHeight) .arg(formattedTimeDiff) -// .arg(QLocale(QLocale::English).toString(lastBlockTimestamp, "dd MMM yyyy, HH:mm:ss")) .arg(warningString) : tr("Synchronization: %1 blocks left (%2)") .arg(knownBlockHeight - lastBlockHeight) @@ -323,10 +210,6 @@ void WalletStatusBar::updateSyncState() void WalletStatusBar::updateEncryptedState(bool /*isEncrypted*/) { -// if (isEncrypted) -// m_encryptionStatusIconLabel->setPixmap(Settings::instance().getCurrentStyle().getEncryptedIcon()); -// else -// m_encryptionStatusIconLabel->setPixmap(Settings::instance().getCurrentStyle().getNotEncryptedIcon()); } } diff --git a/src/tableview.cpp b/src/tableview.cpp deleted file mode 100644 index df72ef6..0000000 --- a/src/tableview.cpp +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#include -#include -#include -#include - -#include "tableview.h" -//#include "Settings/Settings.h" -//#include "LinkLikeColumnDelegate.h" -//#include "Style/Style.h" -#include "windoweditemmodel.h" - - -namespace WalletGUI { - -namespace { - -const char WALLET_VIEW_STYLE_SHEET_TEMPLATE[] = - "* {" - "font-family: %fontFamily%;" - "}" - - "WalletGui--WalletTableView {" - "border: none;" - "font-size: %fontSizeNormal%;" - "background-color: #ffffff;" - "border-bottom: 1px solid transparent;" - "}" - - "WalletGui--WalletTableView[showBottomBorder=\"true\"] {" - "border: none;" - "border-bottom: 1px solid %borderColor%;" - "}" - - "WalletGui--WalletTableView > QHeaderView {" - "background-color: #ffffff;" - "border: none;" - "border-bottom: 1px solid %borderColor%;" - "}" - - "WalletGui--WalletTableView > QHeaderView::section:horizontal {" - "height: 20px;" - "font-size: %fontSizeSmall%;" - "color: %fontColorGray%;" - "background-color: #ffffff;" - "border: none;" - "border-left: 23px solid transparent;" - "border-right: 20px solid transparent;" - "}" - - "WalletGui--WalletTableView::item {" - "background: %backgroundColorAlternate%;" - "border: none;" - "border-left: 20px solid transparent;" - "border-right: 20px solid transparent;" - "}" - - "WalletGui--WalletTableView::item:alternate {" - "background: #ffffff;" - "}" - - "WalletGui--WalletTableView::item:selected {" - "color: #ffffff;" - "background: %selectionColor%;" - "}" - - "WalletGui--WalletTableView[hoverIsVisible=\"true\"]::item:hover {" - "background: #e9eaec;" - "alternate-background-color: #e9eaec;" - "}"; - -} - -WalletTableView::WalletTableView(QWidget* _parent) - : QTableView(_parent) -// , m_linkLikeColumnDelegate(nullptr) - , m_autoUpdateRowCount(true) -{ - setMouseTracking(true); - setAlternatingRowColors(true); - setTextElideMode(Qt::ElideMiddle); - setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); -// setStyleSheet(Settings::instance().getCurrentStyle().makeStyleSheet(WALLET_VIEW_STYLE_SHEET_TEMPLATE)); - connect(this, &WalletTableView::clicked, this, &WalletTableView::itemClicked); - setToolTipDuration(1000); -// verticalHeader()->setDefaultSectionSize(Settings::instance().getCurrentStyle().viewItemHeight()); -} - -WalletTableView::~WalletTableView() -{} - -void WalletTableView::setLinkLikeColumnSet(const QSet& linkLikeColumnSet) -{ - m_linkLikeColumnSet = linkLikeColumnSet; -// if (!m_linkLikeColumnSet.isEmpty() && m_linkLikeColumnDelegate == nullptr) { -// m_linkLikeColumnDelegate = new LinkLikeColumnDelegate(this); -// for (int _column : m_linkLikeColumnSet) { -// setItemDelegateForColumn(_column, m_linkLikeColumnDelegate); -// } -// } -} - -void WalletTableView::setCopyableColumnSet(const QSet& copyableColumnSet) -{ - m_copyableColumnSet = copyableColumnSet; -} - -void WalletTableView::setHoverIsVisible(bool hoverIsVisible) -{ - setProperty("hoverIsVisible", hoverIsVisible); - style()->unpolish(this); - style()->polish(this); -} - -void WalletTableView::setModel(QAbstractItemModel* model) -{ - QTableView::setModel(model); - updateRowCount(); -} - -void WalletTableView::updateRowCount() -{ - if (verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) - { - WalletWindowedItemModel* windowedModel = qobject_cast(model()); - if (windowedModel != nullptr) - { - int rows = calculateVisibleRowCount(); - windowedModel->setWindowSize(rows); - } - } -} - -void WalletTableView::setAutoUpdateRowCount(bool autoUpdateRowCount) -{ - m_autoUpdateRowCount = autoUpdateRowCount; -} - -void WalletTableView::mouseMoveEvent(QMouseEvent* event) -{ - QPoint pos = event->pos(); - QModelIndex index = indexAt(pos); - if (index.isValid() && (m_linkLikeColumnSet.contains(index.column()) || m_copyableColumnSet.contains(index.column()))) - setCursor(Qt::PointingHandCursor); - else - setCursor(Qt::ArrowCursor); - - QTableView::mouseMoveEvent(event); -} - -void WalletTableView::paintEvent(QPaintEvent* event) -{ - if (!property("showBottomBorder").toBool() && verticalScrollBar()->isVisible()) - { - setProperty("showBottomBorder", true); - style()->unpolish(this); - style()->polish(this); - } - else if (property("showBottomBorder").toBool() && !verticalScrollBar()->isVisible()) - { - setProperty("showBottomBorder", false); - style()->unpolish(this); - style()->polish(this); - } - - QTableView::paintEvent(event); -} - -void WalletTableView::resizeEvent(QResizeEvent* event) -{ - QTableView::resizeEvent(event); - if (!m_autoUpdateRowCount) - return; - - const int viewItemHeight = /*Settings::instance().getCurrentStyle().viewItemHeight()*/ 46; - if (model() != nullptr && - (event->size().height() < model()->rowCount() * viewItemHeight || event->size().height() >= model()->rowCount() * viewItemHeight + viewItemHeight)) - { - updateRowCount(); - } -} - -void WalletTableView::itemClicked(const QModelIndex& index) -{ - if (index.isValid()) - { - if (m_linkLikeColumnSet.contains(index.column())) - { - emit doubleClicked(index); - } - else if (m_copyableColumnSet.contains(index.column())) - { - emit copyableItemClickedSignal(index); - } - } -} - -int WalletTableView::calculateVisibleRowCount() const -{ - if (model() == nullptr) - return 0; - return viewport()->height() / /*Settings::instance().getCurrentStyle().viewItemHeight()*/ 46; -} - -} diff --git a/src/tableview.h b/src/tableview.h deleted file mode 100644 index d2f0fff..0000000 --- a/src/tableview.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2015-2017, The Bytecoin developers -// -// This file is part of Bytecoin. -// -// Bytecoin is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Bytecoin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Bytecoin. If not, see . - -#pragma once - -#include - -namespace WalletGUI { - -class WalletTableView : public QTableView -{ - Q_OBJECT - Q_DISABLE_COPY(WalletTableView) - -public: - explicit WalletTableView(QWidget* parent); - virtual ~WalletTableView(); - - void setLinkLikeColumnSet(const QSet& linkLikeColumnSet); - void setCopyableColumnSet(const QSet& copyableColumnSet); - void setHoverIsVisible(bool hoverIsVisible); - void updateRowCount(); - void setAutoUpdateRowCount(bool autoUpdateRowCount); - - virtual void setModel(QAbstractItemModel* model) override; - -protected: - virtual void mouseMoveEvent(QMouseEvent* event) override; - virtual void paintEvent(QPaintEvent* event) override; - virtual void resizeEvent(QResizeEvent* event) override; - -private: - QSet m_linkLikeColumnSet; - QSet m_copyableColumnSet; -// LinkLikeColumnDelegate* m_linkLikeColumnDelegate; - bool m_autoUpdateRowCount; - - void itemClicked(const QModelIndex& index); - int calculateVisibleRowCount() const; - -Q_SIGNALS: - void copyableItemClickedSignal(const QModelIndex& index); -}; - -} diff --git a/src/transferframe.h b/src/transferframe.h index cd37ff5..036bb50 100644 --- a/src/transferframe.h +++ b/src/transferframe.h @@ -19,7 +19,6 @@ #include #include -//#include "Application/IWalletUiItem.h" class QCompleter; @@ -65,7 +64,6 @@ class TransferFrame : public QFrame void setBigTransactionError(bool error = true); void setLabelLikePaymentIdError(bool error = true); - // QObject virtual bool eventFilter(QObject* object, QEvent* event) override; private: diff --git a/src/walletd.cpp b/src/walletd.cpp index 731ef50..56793b5 100644 --- a/src/walletd.cpp +++ b/src/walletd.cpp @@ -2,7 +2,9 @@ #include #include #include +#include +#include #include "walletd.h" #include "JsonRpc/JsonRpcClient.h" #include "settings.h" @@ -131,6 +133,8 @@ RemoteWalletd::RemoteWalletd(const QString& endPoint, QObject* parent) connect(jsonClient_, &JsonRpc::WalletClient::packetSent, this, &RemoteWalletd::packetSent); connect(jsonClient_, &JsonRpc::WalletClient::packetReceived, this, &RemoteWalletd::packetReceived); + connect(jsonClient_, &JsonRpc::WalletClient::authRequiredSignal, this, &RemoteWalletd::authRequired); + connect(this, &RemoteWalletd::errorOccurred, this, &RemoteWalletd::rerun); } @@ -146,7 +150,6 @@ void RemoteWalletd::run() if (isConnected()) return; -// connect(this, &RemoteWalletd::errorOccurred, this, &RemoteWalletd::rerun); setState(State::CONNECTING); onceCallOrDieConnect( @@ -168,7 +171,6 @@ void RemoteWalletd::run() /*virtual*/ void RemoteWalletd::stop() { -// disconnect(this, &RemoteWalletd::errorOccurred, this, &RemoteWalletd::rerun); if (rerunTimerId_ != -1) { killTimer(rerunTimerId_); @@ -196,28 +198,15 @@ void RemoteWalletd::statusReceived(const RpcApi::Status& status) status.incoming_peer_count}); jsonClient_->sendGetBalance(RpcApi::GetBalance::Request{QString{}, -1}); -// jsonClient_->sendGetTransfers(RpcApi::GetTransfers::Request{}); -// RpcApi::GetTransfers::Request req; -// req.desired_transactions_count = 200; -// req.from_height = status.top_known_block_height > (CONFIRMATIONS + 2) ? (status.top_known_block_height - CONFIRMATIONS - 2) : 0; -// jsonClient_->sendGetTransfers(req); } } void RemoteWalletd::rerun() { -// QTimer::singleShot(RERUN_TIMER_MSEC, [this]() { RemoteWalletd::run(); }); // could not call the 'run' as a slot because it is virtual, but we want to use it here as non-virtual function -// if (state_ != State::STOPPED) -// QTimer::singleShot(RERUN_TIMER_MSEC, this, &RemoteWalletd::rerunImpl); // could not call the 'run' as a slot because it is virtual, but we want to use it here as non-virtual function if (rerunTimerId_ == -1) rerunTimerId_ = startTimer(RERUN_TIMER_MSEC); } -//void RemoteWalletd::rerunImpl() -//{ -// return RemoteWalletd::run(); -//} - void RemoteWalletd::timerEvent(QTimerEvent* event) { if (event->timerId() == rerunTimerId_) @@ -345,14 +334,20 @@ void RemoteWalletd::getTransfers(const RpcApi::GetTransfers::Request& req) jsonClient_->sendGetTransfers(req); } +void RemoteWalletd::authRequired(QAuthenticator* authenticator) +{ + emit authRequiredSignal(authenticator); +} -BuiltinWalletd::BuiltinWalletd(const QString& pathToWallet, bool createNew, QObject* parent) + +BuiltinWalletd::BuiltinWalletd(const QString& pathToWallet, bool createNew, QByteArray&& keys, QObject* parent) : RemoteWalletd(Settings::instance().getBuilinRpcEndPoint(), parent) , walletd_(new QProcess(this)) , state_(State::STOPPED) , pathToWallet_(pathToWallet) , createNew_(createNew) , changePassword_(false) + , keys_(std::move(keys)) { walletd_->setProgram(Settings::getDefaultWalletdPath()); connect(walletd_, &QProcess::readyReadStandardOutput, this, &BuiltinWalletd::daemonStandardOutputReady); @@ -383,10 +378,13 @@ void BuiltinWalletd::run() { QStringList args; args << QString("--wallet-file=%1").arg(pathToWallet_); + args << QString("--walletd-authorization=%1").arg(auth_.getHttpBasicAuth()); if (createNew_) args << "--generate-wallet"; -// if (!password_.isEmpty()) -// args << QString("--wallet-password=%1").arg(password_); + + const bool importKeys = !keys_.isEmpty(); + if (importKeys) + args << "--import-keys"; run(args); @@ -395,6 +393,9 @@ void BuiltinWalletd::run() else emit requestPasswordSignal(); + if (importKeys) + walletd_->write(keys_.toHex() + QString{'\n'}.toUtf8()); + walletd_->write((password_ + '\n').toUtf8()); if (createNew_) walletd_->write((password_ + '\n').toUtf8()); // write confirmation @@ -457,12 +458,7 @@ void BuiltinWalletd::changeWalletPassword(QString&& oldPassword, QString&& newPa [this, &oldPassword, &newPassword]() { QStringList args; -// if (!password_.isEmpty()) -// args << QString("--wallet-password=%1").arg(oldPassword); args << QString("--wallet-file=%1").arg(pathToWallet_); -//// args << QString("--wallet-password=%1").arg(oldPassword); -// args << QString("--set-password=%1").arg(newPassword); - args << QString("--set-password"); run(args); walletd_->write((oldPassword + '\n').toUtf8()); @@ -502,7 +498,6 @@ void BuiltinWalletd::daemonErrorOccurred(QProcess::ProcessError error) void BuiltinWalletd::daemonFinished(int exitCode, QProcess::ExitStatus exitStatus) { -// const State state = (state_ == State::FINISHING || exitStatus == QProcess::NormalExit) ? State::STOPPED : State::CRASHED; const State state = (state_ == State::FINISHING || state_ == State::STOPPED) ? State::STOPPED : State::CRASHED; setState(state); RemoteWalletd::stop(); @@ -547,10 +542,6 @@ void BuiltinWalletd::daemonStandardOutputReady() emit daemonStandardOutputSignal(QString(data)); } -//void BuiltinWalletd::daemonStateChanged(QProcess::ProcessState state) -//{ -//} - QString BuiltinWalletd::errorString() const { return walletd_->errorString(); @@ -566,4 +557,47 @@ void BuiltinWalletd::connected() createNew_ = false; } +void BuiltinWalletd::authRequired(QAuthenticator* authenticator) +{ + authenticator->setUser(auth_.getUser()); + authenticator->setPassword(auth_.getPass()); +} + + +static QString generatePass() +{ + static constexpr size_t length = 25; + static constexpr char alphabet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + std::default_random_engine generator; + generator.seed(QDateTime::currentMSecsSinceEpoch() / 1000); + std::uniform_int_distribution distribution(0, sizeof(alphabet) - 2); + QString res; + for (size_t i = 0; i < length; ++i) + res += alphabet[distribution(generator)]; + + return res; +} + +RandomAuth::RandomAuth() + : user_("user") + , pass_(generatePass()) +{} + +const QString& RandomAuth::getUser() const +{ + return user_; +} + +const QString& RandomAuth::getPass() const +{ + return pass_; +} + +QString RandomAuth::getHttpBasicAuth() const +{ + const QString concatenated = user_ + ":" + pass_; + return QString::fromLatin1(concatenated.toLocal8Bit().toBase64()); +} + + } diff --git a/src/walletd.h b/src/walletd.h index 5a03b78..cd4dc21 100644 --- a/src/walletd.h +++ b/src/walletd.h @@ -6,6 +6,8 @@ #include "rpcapi.h" +class QAuthenticator; + namespace JsonRpc { class WalletClient; @@ -32,13 +34,6 @@ class RemoteWalletd : public QObject virtual void run(); virtual void stop(); -// void sendGetStatus(const QString& topBlockHash, quint32 txPoolVersion = 0); -// void sendGetHistory(quint32 blockIndex = 0, quint32 blockCount = std::numeric_limits::max()); -// void sendGetAddresses(); -// void sendGetUnspent(); -// void sendCreateTransaction(const QList& sourceAddresses, const QString& changeAddress, quint32 confirmations, const QVariantMap& transaction, bool sendImmediately); - -// void sendTx(const QString& spendAddress, const QString& changeAddress, quint32 confirmations, const QVariantMap& transaction, bool sendImmediately); void createTx(const RpcApi::CreateTransaction::Request& tx); void sendTx(const RpcApi::SendTransaction::Request& tx); void getTransfers(const RpcApi::GetTransfers::Request& req); @@ -68,6 +63,8 @@ class RemoteWalletd : public QObject void packetSent(const QByteArray& data); void packetReceived(const QByteArray& data); + void authRequiredSignal(QAuthenticator* authenticator); + private: JsonRpc::WalletClient* jsonClient_; State state_; @@ -75,8 +72,8 @@ class RemoteWalletd : public QObject void setState(State state); void rerun(); -// void rerunImpl(); virtual void timerEvent(QTimerEvent* event) override; + virtual void authRequired(QAuthenticator* authenticator); private slots: void statusReceived(const RpcApi::Status& status); @@ -95,6 +92,20 @@ private slots: }; +class RandomAuth +{ +public: + RandomAuth(); + + const QString& getUser() const; + const QString& getPass() const; + QString getHttpBasicAuth() const; + +private: + QString user_; + QString pass_; +}; + class BuiltinWalletd : public RemoteWalletd { Q_OBJECT @@ -124,7 +135,7 @@ class BuiltinWalletd : public RemoteWalletd Q_ENUM(ReturnCode) - BuiltinWalletd(const QString& pathToWallet, bool createNew, QObject* parent = nullptr); + BuiltinWalletd(const QString& pathToWallet, bool createNew, QByteArray&& keys, QObject* parent = nullptr); virtual ~BuiltinWalletd() override; virtual void run() override; @@ -159,11 +170,14 @@ class BuiltinWalletd : public RemoteWalletd QString password_; bool createNew_; bool changePassword_; + QByteArray keys_; + RandomAuth auth_; void setState(State state); void run(const QStringList& args); void connected(); + virtual void authRequired(QAuthenticator* authenticator) override; private slots: void daemonStandardOutputReady(); @@ -173,7 +187,7 @@ private slots: void daemonErrorOccurred(QProcess::ProcessError error); void daemonFinished(int exitCode, QProcess::ExitStatus exitStatus); // void daemonStateChanged(QProcess::ProcessState state); - +// void authRequired(QAuthenticator* authenticator); }; } diff --git a/src/walletmodel.cpp b/src/walletmodel.cpp index c0c2a08..cd21e33 100644 --- a/src/walletmodel.cpp +++ b/src/walletmodel.cpp @@ -90,16 +90,9 @@ QVariant WalletModel::headerData(int section, Qt::Orientation orientation, int r break; case Qt::TextAlignmentRole: { -// if (section == COLUMN_TIMESTAMP) - return static_cast(Qt::AlignLeft | Qt::AlignVCenter); -// return static_cast(Qt::AlignRight | Qt::AlignVCenter); - } - case Qt::FontRole: - { -// QFont font; -// font.setPointSize(11); -// return font; + return static_cast(Qt::AlignLeft | Qt::AlignVCenter); } +// case Qt::FontRole: } return QVariant(); @@ -367,9 +360,6 @@ void WalletModel::stateChanged(RemoteWalletd::State /*oldState*/, RemoteWalletd: QVector changedRoles; changedRoles << Qt::EditRole << Qt::DisplayRole << ROLE_STATE; -// if (pimpl_->walletdState != RemoteWalletd::State::CONNECTED && pimpl_->walletdState != RemoteWalletd::State::JSON_ERROR) -// statusReceived(RpcApi::Status{}); -// reset(); emit dataChanged(index(0, COLUMN_STATE), index(0, COLUMN_STATE), changedRoles); } diff --git a/src/walletmodel.h b/src/walletmodel.h index 3211632..04ea202 100644 --- a/src/walletmodel.h +++ b/src/walletmodel.h @@ -50,23 +50,12 @@ class WalletModel : public QAbstractItemModel COLUMN_KNOWN_TOP_BLOCK_HEIGHT, COLUMN_PEER_COUNT_SUM, // additional status -// COLUMN_WALLET_CONNECT, COLUMN_STATE, COLUMN_SPENDABLE, // getBalance COLUMN_SPENDABLE_DUST, COLUMN_LOCKED_OR_UNCONFIRMED, COLUMN_TOTAL, - -// COLUMN_PUBLIC_KEY, -// COLUMN_GLOBAL_INDEX, -// COLUMN_AMOUNT, -// COLUMN_UNLOCK_TIME, -// COLUMN_HEIGHT, -// COLUMN_KEY_IMAGE, - -// COLUMN_VIEW_SECRET_KEY, // getViewKey -// COLUMN_VIEW_PUBLIC_KEY, }; enum Roles @@ -101,22 +90,11 @@ class WalletModel : public QAbstractItemModel ROLE_PEER_COUNT_SUM, ROLE_STATE, // state -// ROLE_WALLET_CONNECT, ROLE_SPENDABLE, // getBalance ROLE_SPENDABLE_DUST, ROLE_LOCKED_OR_UNCONFIRMED, ROLE_TOTAL, - -// ROLE_PUBLIC_KEY, -// ROLE_GLOBAL_INDEX, -// ROLE_AMOUNT, -// ROLE_UNLOCK_TIME, -// ROLE_HEIGHT, -// ROLE_KEY_IMAGE, - -// ROLE_VIEW_SECRET_KEY, // getViewKey -// ROLE_VIEW_PUBLIC_KEY, }; WalletModel(QObject* parent); @@ -132,15 +110,10 @@ class WalletModel : public QAbstractItemModel virtual bool canFetchMore(const QModelIndex& parent) const override; virtual void fetchMore(const QModelIndex& parent) override; -// bool isInitialized() const; void reset(); -// bool isConnected() const; -// bool hasAddress() const; - QString getAddress() const; -// QVariant getAddress(int index = 0) const; quint32 getLastBlockHeight() const; QString getLastBlockHash() const; QDateTime getLastBlockTimestamp() const; @@ -154,13 +127,6 @@ class WalletModel : public QAbstractItemModel void getTransfersSignal(const RpcApi::GetTransfers::Request& req); public slots: -// void addressesChanged(const QVariantMap& addresses); -// void historyChanged(const QVariantMap& history); -// void statusChanged(const QVariantMap& status); -// void unspentsChanged(const QVariantMap& unspents); -// void transactionSent(const QVariantMap& sendTransaction); -// void errorOccured(const QString& message, const QString& description); - void statusReceived(const RpcApi::Status& status); void transfersReceived(const RpcApi::Transfers& history); void addressesReceived(const RpcApi::Addresses& addresses); @@ -198,38 +164,8 @@ public slots: quint32 getTopConfirmedBlock() const; quint32 getBottomConfirmedBlock() const; -// virtual bool canFetchMore(const QModelIndex& parent) const override; -// virtual void fetchMore(const QModelIndex& parent) override; - -// QPair getUnspent() const; -// qint64 getAmount(const QVariantMap& tx) const; - -// QVariantList addresses_; -// QVariantList txs_; -// QVariantMap status_; -// QVariantMap unspents_; - const int columnCount_; QScopedPointer pimpl_; - -// RpcApi::Status status_; -// RpcApi::Balance balance_; -// QList txs_; -//// QList confirmedTxs_; -//// QList unconfirmedTxs_; -// QList addresses_; -//// RpcApi::ViewKey viewKey_; -//// RpcApi::Unspents unspents_; - -// RemoteWalletd::State state_; -//// bool canFetchMore_; -//// int unconfirmedTxsSize_; - -// const int columnCount_; -//// quint32 topReceivedBlock_; -//// quint32 bottomReceivedBlock_; -// int unconfimedSize_; -// bool canFetchMore_; }; }