diff --git a/.drone.yml b/.drone.yml index 9fee86d..348bfc6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -28,21 +28,21 @@ steps: - name: files_linux_release path: /files commands: - - export FN="feather-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" + - export FN="feather-wow-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" - export TARGET_DIR="/files/$DRONE_SOURCE_BRANCH" - mkdir -p "$TARGET_DIR" - echo "writing to $TARGET_DIR/$FN" - - strip -s build/bin/feather - - zip -j "$TARGET_DIR/$FN" build/feather.log build/bin/feather - - echo "[*] written to https://build.featherwallet.org/files/linux-release/$DRONE_SOURCE_BRANCH/$FN" + - strip -s build/bin/feather-wow + - zip -j "$TARGET_DIR/$FN" build/feather.log build/bin/feather-wow + - echo "[*] written to https://build.featherwallet.org/files-wow/linux-release/$DRONE_SOURCE_BRANCH/$FN" volumes: - name: ccache_linux_release host: - path: /var/drone/ccache_linux_release/ + path: /var/drone/ccache_wow_linux_release/ - name: files_linux_release host: - path: /build/feather_files/files/linux-release/ + path: /build/feather-wow_files/files-wow/linux-release/ --- @@ -54,7 +54,7 @@ steps: - name: build image: feather:appimage commands: - - export FN="feather-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" + - export FN="feather-wow-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" - export BRANCH="$DRONE_SOURCE_BRANCH" - bash ./contrib/build-appimage.sh - name: deploy @@ -63,17 +63,18 @@ steps: - name: files_linux_appimage path: /files commands: - - export FN="feather-`git rev-parse --short HEAD`.AppImage" + - find /drone/src/ + - export FN="feather-wow-`git rev-parse --short HEAD`.AppImage" - export TARGET_DIR="/files/$DRONE_SOURCE_BRANCH" - mkdir -p "$TARGET_DIR" - echo "writing to $TARGET_DIR/$FN" - - mv "Feather-1.0-x86_64.AppImage" "$TARGET_DIR/$FN" - - echo "[*] written to https://build.featherwallet.org/files/linux-release-appimage/$DRONE_SOURCE_BRANCH/$FN" + - mv "Feather-WOW-1.0-x86_64.AppImage" "$TARGET_DIR/$FN" + - echo "[*] written to https://build.featherwallet.org/files-wow/linux-release-appimage/$DRONE_SOURCE_BRANCH/$FN" volumes: - name: files_linux_appimage host: - path: /build/feather_files/files/linux-release-appimage/ + path: /build/feather-wow_files/files-wow/linux-release-appimage/ --- @@ -105,20 +106,20 @@ steps: - name: files_win_release path: /files commands: - - export FN="feather-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" + - export FN="feather-wow-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" - export TARGET_DIR="/files/$DRONE_SOURCE_BRANCH" - mkdir -p "$TARGET_DIR" - echo "writing to $TARGET_DIR/$FN" - - zip -j "$TARGET_DIR/$FN" build/feather.log build/bin/feather.exe - - echo "[*] written to https://build.featherwallet.org/files/windows-mxe-release/$DRONE_SOURCE_BRANCH/$FN" + - zip -j "$TARGET_DIR/$FN" build/feather.log build/bin/feather-wow.exe + - echo "[*] written to https://build.featherwallet.org/files-wow/windows-mxe-release/$DRONE_SOURCE_BRANCH/$FN" volumes: - name: ccache_win_release host: - path: /var/drone/ccache_win_release/ + path: /var/drone/ccache_wow_win_release/ - name: files_win_release host: - path: /build/feather_files/files/windows-mxe-release/ + path: /build/feather-wow_files/files-wow/windows-mxe-release/ --- @@ -134,26 +135,26 @@ steps: path: /files commands: - mkdir -p build - - scp -P22 utils/build_macos.sh administrator@steve.jobs.xmr.pm:build_macos.sh - - ssh administrator@steve.jobs.xmr.pm "chmod +x build_macos.sh && PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ~/build_macos.sh $DRONE_COMMIT_SHA" - - scp -P22 administrator@steve.jobs.xmr.pm:feather.zip build/feather.zip + - scp -P22 utils/build_macos.sh administrator@steve.jobs.xmr.pm:build_wow_macos.sh + - ssh administrator@steve.jobs.xmr.pm "chmod +x build_wow_macos.sh && PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ~/build_wow_macos.sh $DRONE_COMMIT_SHA" + - scp -P22 administrator@steve.jobs.xmr.pm:feather-wow.zip build/feather-wow.zip - name: deploy image: feather:mac volumes: - name: files_mac_release path: /files commands: - - export FN="feather-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" + - export FN="feather-wow-`echo $DRONE_COMMIT_AFTER | cut -c 1-7`.zip" - export TARGET_DIR="/files/$DRONE_SOURCE_BRANCH" - mkdir -p "$TARGET_DIR" - echo "writing to $TARGET_DIR/$FN" - - mv build/feather.zip "$TARGET_DIR/$FN" - - echo "[*] written to https://build.featherwallet.org/files/mac-release/$DRONE_SOURCE_BRANCH/$FN" + - mv build/feather-wow.zip "$TARGET_DIR/$FN" + - echo "[*] written to https://build.featherwallet.org/files-wow/mac-release/$DRONE_SOURCE_BRANCH/$FN" volumes: - name: files_mac_release host: - path: /build/feather_files/files/mac-release/ + path: /build/feather-wow_files/files-wow/mac-release/ --- kind: signature hmac: 527d334190a8a824b3b781a05ae4c7d87f4fa2bc37ebc53a96db91f925fa4a52 diff --git a/.gitmodules b/.gitmodules index d92df61..bbe0a1e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "monero"] path = monero - url = https://git.wownero.com/feather/monero.git + url = https://git.wownero.com/feather/wownero.git [submodule "contrib/torsocks"] path = contrib/torsocks url = https://git.torproject.org/torsocks.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 844e4e3..52b8ef9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,10 @@ set(VERSION_REVISION "0") set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}") option(FETCH_DEPS "Download dependencies if they are not found" ON) -option(XMRTO "Include Xmr.To module" ON) -option(BUILD_TOR "Build Tor" OFF) +option(XMRTO "Include Xmr.To module" OFF) +option(XMRIG "Path to XMRig binary to embed inside Feather" OFF) +option(TOR "Path to Tor binary to embed inside Feather" OFF) +option(TOR_VERSION "Optional git hash or tag of embedded Tor version" "tor-0.4.3.5") option(STATIC "Link libraries statically, requires static Qt") option(USE_DEVICE_TREZOR "Trezor support compilation" OFF) option(DONATE_BEG "Prompt donation window every once in a while" ON) @@ -28,7 +30,7 @@ if(DEBUG) set(CMAKE_VERBOSE_MAKEFILE ON) endif() -set(MONERO_HEAD "a1404e92cb439ba0f120e7c4a579ed0b9a0372a4") +set(WOWNERO_HEAD "9d6a7bcc14e512ccb04f5f286c1710fca19e4762") set(BUILD_GUI_DEPS ON) set(ARCH "x86-64") set(BUILD_64 ON) @@ -81,11 +83,11 @@ endfunction() find_package(Git) if(GIT_FOUND) - execute_process(COMMAND git rev-parse "HEAD" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/monero OUTPUT_VARIABLE _MONERO_HEAD OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT _MONERO_HEAD STREQUAL MONERO_HEAD) - message(FATAL_ERROR "[submodule] Monero HEAD was at ${_MONERO_HEAD} but should be at ${MONERO_HEAD}") + execute_process(COMMAND git rev-parse "HEAD" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/monero OUTPUT_VARIABLE _WOWNERO_HEAD OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT _WOWNERO_HEAD STREQUAL WOWNERO_HEAD) + message(FATAL_ERROR "[submodule] Monero HEAD was at ${_WOWNERO_HEAD} but should be at ${WOWNERO_HEAD}") else() - message(STATUS "[submodule] Monero HEAD @ ${MONERO_HEAD}") + message(STATUS "[submodule] Monero HEAD @ ${WOWNERO_HEAD}") endif() endif() @@ -174,47 +176,48 @@ if(UNIX AND NOT APPLE) endif() endif() -# Tor/torsocks -set(TOR_TAG "tor-0.4.3.5") -set(TOR_DIR "${CMAKE_SOURCE_DIR}/contrib/tor") +if("$ENV{DRONE}" STREQUAL "true") + message(STATUS "We are inside a static compile with Drone CI") +endif() -if(BUILD_TOR AND APPLE) - execute_process(COMMAND bash -c "touch ${CMAKE_SOURCE_DIR}/src/tor/libevent-2.1.7.dylib") -ENDIF() +# To build Feather with embedded (and static) Tor, pass CMake -DTOR=/path/to/tor +if(TOR) + if(APPLE) + execute_process(COMMAND bash -c "touch ${CMAKE_CURRENT_SOURCE_DIR}/src/tor/libevent-2.1.7.dylib") + endif() -if(UNIX AND NOT APPLE) - set(TOR_LIB "libtorsocks.so") -elseif(APPLE) - set(TOR_LIB "libtorsocks.dylib") + # on the buildbot Tor is baked into the image + # - linux: See `Dockerfile` + # - windows: https://github.com/mxe/mxe/blob/1024dc7d2db5eb7d5d3c64a2c12b5f592572f1ce/plugins/apps/tor.mk + # - macos: taken from Tor Browser official release + set(TOR_COPY_CMD "cp ${TOR} ${CMAKE_CURRENT_SOURCE_DIR}/src/assets/exec/tor") + message(STATUS "${TOR_COPY_CMD}") + execute_process(COMMAND bash -c "${TOR_COPY_CMD}" RESULT_VARIABLE ret) + if(ret EQUAL "1") + message(FATAL_ERROR "Tor copy failure: ${TOR_COPY_CMD}") + endif() + + message(STATUS "Embedding Tor binary at ${TOR}") +else() + message(STATUS "Skipping Tor inclusion because -DTOR=Off") endif() -if("$ENV{DRONE}" STREQUAL "true" AND APPLE) - message(STATUS "We are inside a static compile with Drone CI") - # @TODO: taken from Tor Browser official release for now - execute_process(COMMAND bash -c "cp ~/tor/libevent-2.1.7.dylib ${CMAKE_SOURCE_DIR}/src/tor/libevent-2.1.7.dylib") - execute_process(COMMAND bash -c "cp ~/tor/tor ${CMAKE_SOURCE_DIR}/src/tor/tor") -elseif("$ENV{DRONE}" STREQUAL "true" AND BUILD_TOR) - message(STATUS "We are inside a static compile with Drone CI") - if(MINGW) - execute_process(COMMAND bash -c "cp /mxe/usr/x86_64-w64-mingw32.static/bin/tor.exe ${CMAKE_SOURCE_DIR}/src/tor/tor.exe") - elseif(UNIX AND NOT APPLE) - execute_process(COMMAND bash -c "cp /usr/local/tor/bin/tor ${CMAKE_SOURCE_DIR}/src/tor/tor") - execute_process(COMMAND bash -c "cp /usr/local/torsocks/lib/torsocks/* ${CMAKE_SOURCE_DIR}/src/tor/") +# To build Feather with embedded (and static) XMRig, pass CMake -DXMRIG=/path/to/xmrig +if(XMRIG) + # on the buildbot XMRig is baked into the image + # - linux: See `Dockerfile` + # - windows: See `Dockerfile_windows` + # - macos: manually downloaded an official release + set(XMRIG_COPY_CMD "cp ${XMRIG} ${CMAKE_CURRENT_SOURCE_DIR}/src/assets/exec/xmrig") + message(STATUS "${XMRIG_COPY_CMD}") + execute_process(COMMAND bash -c "${XMRIG_COPY_CMD}" RESULT_VARIABLE ret) + if(ret EQUAL "1") + message(FATAL_ERROR "XMRig copy failure: ${XMRIG_COPY_CMD}") endif() + + message(STATUS "Embedding XMRig binary at ${XMRIG}") else() - if(BUILD_TOR) - if(UNIX OR APPLE) - execute_process(COMMAND bash -c "ls -al src/tor/${TOR_LIB} 2>/dev/null" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE TOR_FOUND OUTPUT_STRIP_TRAILING_WHITESPACE) - if(TOR_FOUND) - message(STATUS "${TOR_LIB} found, skipping Tor build") - else() - message(STATUS "${TOR_LIB} not found, building Tor") - execute_process(COMMAND bash -c "bash build_tor.sh ${TOR_TAG} ${CMAKE_SOURCE_DIR} 'ON'" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/contrib) - endif() - endif() - else() - message(STATUS "Skipping Tor build because -DBUILD_TOR=OFF") - endif() + message(STATUS "Skipping XMRig inclusion because -DXMRIG=Off") endif() if(MINGW) diff --git a/Makefile b/Makefile index 046705f..dfd632b 100644 --- a/Makefile +++ b/Makefile @@ -30,8 +30,7 @@ CMAKEFLAGS = \ -DARCH=x86_64 \ -DBUILD_64=On \ -DBUILD_TESTS=Off \ - -DXMRTO=ON \ - -DMORPHTOKEN=ON \ + -DXMRTO=Off \ -DXMRIG=Off \ -DTOR=Off \ -DCMAKE_CXX_STANDARD=11 \ @@ -74,4 +73,4 @@ mac-release: CMAKEFLAGS += -DCMAKE_BUILD_TYPE=Release mac-release: cmake -Bbuild $(CMAKEFLAGS) $(MAKE) -Cbuild - $(MAKE) -Cbuild deploy \ No newline at end of file + $(MAKE) -Cbuild deploy diff --git a/README.md b/README.md index c8a1d01..ab185f8 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,13 @@ -# Feather - a free Monero desktop wallet +# Feather-WOW - a free Wownero desktop wallet -[![Build Status](https://build.featherwallet.org/api/badges/feather/feather/status.svg)](https://build.featherwallet.org/feather/feather) +[![Build Status](https://build.featherwallet.org/api/badges/feather/feather-wow/status.svg)](https://build.featherwallet.org/feather/feather-wow) -Feather is a free, open-source Monero client Linux with ports for Mac OS and Windows written in C++ with the Qt framework. It is created and maintained by [dsc](dsc@xmr.pm) and [tobtoht](thotbot@protonmail.com). +Feather is a free, open-source Wownero client for Linux with ports for Mac OS and Windows. ## Development resources * Web: [featherwallet.org](https://featherwallet.org) -* Git: [git.wownero.com/feather/feather](https://git.wownero.com/feather/feather) +* Git: [git.wownero.com/feather/feather-wow](https://git.wownero.com/feather/feather-wow) * IRC: `#feather` on OFTC -* Development builds: [build.featherwallet.org/files](https://build.featherwallet.org/files/) +* Development builds: [build.featherwallet.org/files-wow](https://build.featherwallet.org/files-wow/) Copyright (c) 2020-2021 The Monero Project. - -## Compiling Feather from source - -Feather uses Monero, as such it requires the same dependencies as outlined in [Monero's README](https://github.com/monero-project/monero#compiling-monero-from-source). Additionally, Feather uses: - -- Qt 5.15.0 -- libqrencode -- openpgp - -See [BUILDING.md](https://git.wownero.com/feather/feather/src/branch/master/BUILDING.md) for information on how to compile a build. - -## Supporting the project - -Feather is a 100% community-sponsored endeavor. If you want to join our efforts, the easiest thing you can do is support the project financially. - -`47ntfT2Z5384zku39pTM6hGcnLnvpRYW2Azm87GiAAH2bcTidtq278TL6HmwyL8yjMeERqGEBs3cqC8vvHPJd1cWQrGC65f` - -## Developers - -See [HACKING.md](https://git.wownero.com/feather/feather/src/branch/master/HACKING.md) for useful development resources. - -It is HIGHLY recommended that you join the `#feather` IRC channel on OFTC if you are hacking on Feather. Due to the nature of this open source software project, joining this channel and idling is the best way to stay updated on best practices and new developments. diff --git a/cmake/Deploy.cmake b/cmake/Deploy.cmake index 1a1e76b..6c24664 100644 --- a/cmake/Deploy.cmake +++ b/cmake/Deploy.cmake @@ -7,7 +7,7 @@ if(APPLE OR (WIN32 AND NOT STATIC)) find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}") add_custom_command(TARGET deploy POST_BUILD - COMMAND "${MACDEPLOYQT_EXECUTABLE}" "$/../.." -always-overwrite + COMMAND "${MACDEPLOYQT_EXECUTABLE}" "$/../.." -always-overwrite COMMENT "Running macdeployqt..." ) @@ -16,11 +16,11 @@ if(APPLE OR (WIN32 AND NOT STATIC)) if(_qt_svg_dylib) add_custom_command(TARGET deploy POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $/../PlugIns/imageformats/ - COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib - COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib - COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtSvg.framework/Versions/5/QtSvg" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib - COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtCore.framework/Versions/5/QtCore" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib + COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $/../PlugIns/imageformats/ + COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib + COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib + COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtSvg.framework/Versions/5/QtSvg" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib + COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtCore.framework/Versions/5/QtCore" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $/../PlugIns/imageformats/libqsvg.dylib COMMENT "Copying libqsvg.dylib, running install_name_tool" ) endif() diff --git a/contrib/build-appimage.sh b/contrib/build-appimage.sh index a8d7cf7..d6df6f7 100644 --- a/contrib/build-appimage.sh +++ b/contrib/build-appimage.sh @@ -21,20 +21,20 @@ function download_if_not_exist() { fi } -APPDIR="$PWD/feather.AppDir" +APPDIR="$PWD/feather-wow.AppDir" mkdir -p "$APPDIR" mkdir -p "$APPDIR/usr/share/applications/" mkdir -p "$APPDIR/usr/bin" echo "Downloading dependencies" -download_if_not_exist "feather.zip" "https://build.featherwallet.org/files/linux-release/$BRANCH/$FN" -unzip -q feather.zip +download_if_not_exist "feather-wow.zip" "https://build.featherwallet.org/files-wow/linux-release/$BRANCH/$FN" +unzip -q feather-wow.zip -cp "$PWD/src/assets/feather.desktop" "$APPDIR/usr/share/applications/feather.desktop" -cp "$PWD/src/assets/images/appicons/64x64.png" "$APPDIR/feather.png" -cp "$PWD/feather" "$APPDIR/usr/bin/feather" +cp "$PWD/src/assets/feather-wow.desktop" "$APPDIR/usr/share/applications/feather-wow.desktop" +cp "$PWD/src/assets/images/appicons/64x64.png" "$APPDIR/feather-wow.png" +cp "$PWD/feather-wow" "$APPDIR/usr/bin/feather-wow" -/appimagetool deploy "$APPDIR/usr/share/applications/feather.desktop" -VERSION=1.0 /appimagetool ./feather.AppDir +/appimagetool deploy "$APPDIR/usr/share/applications/feather-wow.desktop" +VERSION=1.0 /appimagetool ./feather-wow.AppDir diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 321a4c2..74fd090 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -73,7 +73,7 @@ if(APPLE) list(APPEND RESOURCES ${ICON}) endif() -add_executable(feather ${EXECUTABLE_FLAG} main.cpp +add_executable(feather-wow ${EXECUTABLE_FLAG} main.cpp ${SOURCE_FILES} ${RESOURCES} ${ASSETS_TOR} @@ -81,21 +81,21 @@ add_executable(feather ${EXECUTABLE_FLAG} main.cpp ) # mac os bundle -set_target_properties(feather PROPERTIES +set_target_properties(feather-wow PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/utils/Info.plist" ) -set_property(TARGET feather PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +set_property(TARGET feather-wow PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") -target_include_directories(feather PUBLIC ${OPENGL_INCLUDE_DIR}) -target_include_directories(feather PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) +target_include_directories(feather-wow PUBLIC ${OPENGL_INCLUDE_DIR}) +target_include_directories(feather-wow PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) file(GLOB_RECURSE SRC_SOURCES *.cpp) file(GLOB_RECURSE SRC_HEADERS *.h) -target_include_directories(feather PUBLIC +target_include_directories(feather-wow PUBLIC ${CMAKE_BINARY_DIR}/src/feather_autogen/include ${CMAKE_SOURCE_DIR}/monero/include ${CMAKE_SOURCE_DIR}/monero/src @@ -122,11 +122,11 @@ target_include_directories(feather PUBLIC ) if(DONATE_BEG) - target_compile_definitions(feather PRIVATE DONATE_BEG=1) + target_compile_definitions(feather-wow PRIVATE DONATE_BEG=1) endif() if(XMRTO) - target_compile_definitions(feather PRIVATE XMRTO=1) + target_compile_definitions(feather-wow PRIVATE XMRTO=1) endif() if(MORPHTOKEN) @@ -134,30 +134,34 @@ if(MORPHTOKEN) endif() if(TOR) - target_compile_definitions(feather PRIVATE HAS_TOR=1) + target_compile_definitions(feather-wow PRIVATE HAS_TOR=1) endif() if(XMRIG) - target_compile_definitions(feather PRIVATE HAS_XMRIG=1) + target_compile_definitions(feather-wow PRIVATE HAS_XMRIG=1) endif() if(HAVE_SYS_PRCTL_H) - target_compile_definitions(feather PRIVATE HAVE_SYS_PRCTL_H=1) + target_compile_definitions(feather-wow PRIVATE HAVE_SYS_PRCTL_H=1) endif() if(STATIC) - target_compile_definitions(feather PRIVATE STATIC=1) + target_compile_definitions(feather-wow PRIVATE STATIC=1) +endif() + +if(STATIC) + target_compile_definitions(feather-wow PRIVATE STATIC=1) endif() if("$ENV{DRONE}" STREQUAL "true") - target_compile_definitions(feather PRIVATE DRONE=1) + target_compile_definitions(feather-wow PRIVATE DRONE=1) endif() if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - target_compile_definitions(feather PRIVATE QT_NO_DEBUG=1) + target_compile_definitions(feather-wow PRIVATE QT_NO_DEBUG=1) endif() -target_compile_definitions(feather +target_compile_definitions(feather-wow PUBLIC ${Qt5Core_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} @@ -173,12 +177,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") if(UNIX AND NOT APPLE) # https://stackoverflow.com/questions/57766620/cmake-add-library-doesnt-initialize-static-global-variable # so that contrib/monero-seed/src/gf_elem.cpp properly initializes. A better solution is welcome. - target_link_libraries(feather -Wl,--whole-archive monero-seed::monero-seed -Wl,--no-whole-archive) + target_link_libraries(feather-wow -Wl,--whole-archive monero-seed::monero-seed -Wl,--no-whole-archive) else() - target_link_libraries(feather monero-seed::monero-seed) + target_link_libraries(feather-wow monero-seed::monero-seed) endif() -target_link_libraries(feather +target_link_libraries(feather-wow wallet_merged ${LMDB_LIBRARY} epee @@ -214,30 +218,30 @@ if(APPLE) endif() if(NOT APPLE) - target_link_libraries(feather + target_link_libraries(feather-wow Qt5::QSvgIconPlugin Qt5::QSvgPlugin ) endif() if(STATIC) - target_link_libraries(feather + target_link_libraries(feather-wow Qt5::QSvgIconPlugin Qt5::QSvgPlugin) if(UNIX AND NOT APPLE) - target_link_libraries(feather + target_link_libraries(feather-wow Qt5::QXcbIntegrationPlugin) endif() endif() if(X11_FOUND) - target_link_libraries(feather ${X11_LIBRARIES}) + target_link_libraries(feather-wow ${X11_LIBRARIES}) endif() if(APPLE) include(Deploy) endif() -install(TARGETS feather +install(TARGETS feather-wow DESTINATION ${CMAKE_INSTALL_PREFIX} ) diff --git a/src/appcontext.cpp b/src/appcontext.cpp index 37e9a9a..ff9845a 100644 --- a/src/appcontext.cpp +++ b/src/appcontext.cpp @@ -61,11 +61,11 @@ AppContext::AppContext(QCommandLineParser *cmdargs) { QString appImagePath = qgetenv("APPIMAGE"); if (appImagePath.isEmpty()) { qDebug() << "Not an appimage, using currentPath()"; - return QDir::currentPath() + "/.feather"; + return QDir::currentPath() + "/.feather-wow"; } QFileInfo appImageDir(appImagePath); - return appImageDir.absoluteDir().path() + "/.feather"; + return appImageDir.absoluteDir().path() + "/.feather-wow"; }(); @@ -80,10 +80,10 @@ AppContext::AppContext(QCommandLineParser *cmdargs) { this->homeDir = QDir::homePath(); #if defined(Q_OS_LINUX) or defined(Q_OS_MAC) - this->defaultWalletDir = QString("%1/Monero/wallets").arg(this->configRoot); - this->defaultWalletDirRoot = QString("%1/Monero").arg(this->configRoot); + this->defaultWalletDir = QString("%1/Wownero/wallets").arg(this->configRoot); + this->defaultWalletDirRoot = QString("%1/Wownero").arg(this->configRoot); #elif defined(Q_OS_WIN) - this->defaultWalletDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/Monero"; + this->defaultWalletDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/Wownero"; this->defaultWalletDirRoot = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); #endif @@ -91,7 +91,7 @@ AppContext::AppContext(QCommandLineParser *cmdargs) { if (!QDir().mkpath(defaultWalletDir)) qCritical() << "Unable to create dir: " << defaultWalletDir; - this->configDirectory = QString("%1/.config/feather/").arg(this->configRoot); + this->configDirectory = QString("%1/.config/feather-wow/").arg(this->configRoot); #if defined(Q_OS_UNIX) if(!this->configDirectory.endsWith('/')) this->configDirectory = QString("%1/").arg(this->configDirectory); @@ -101,12 +101,12 @@ AppContext::AppContext(QCommandLineParser *cmdargs) { // Config createConfigDirectory(this->configDirectory); - if(this->cmdargs->isSet("stagenet")) - this->networkType = NetworkType::STAGENET; - else if(this->cmdargs->isSet("testnet")) - this->networkType = NetworkType::TESTNET; - else - this->networkType = NetworkType::MAINNET; +// if(this->cmdargs->isSet("stagenet")) +// this->networkType = NetworkType::STAGENET; +// else if(this->cmdargs->isSet("testnet")) +// this->networkType = NetworkType::TESTNET; +// else + this->networkType = NetworkType::MAINNET; // auto nodeSourceUInt = config()->get(Config::nodeSource).toUInt(); // AppContext::nodeSource = static_cast(nodeSourceUInt); @@ -430,7 +430,7 @@ void AppContext::onWSMessage(const QJsonObject &msg) { this->onWSReddit(reddit_data); } - else if(cmd == "ccs") { + else if(cmd == "wfs") { auto ccs_data = msg.value("data").toArray(); this->onWSCCS(ccs_data); } @@ -601,9 +601,9 @@ void AppContext::createWalletFinish(const QString &password) { } void AppContext::initRestoreHeights() { - restoreHeights[NetworkType::TESTNET] = new RestoreHeightLookup(NetworkType::TESTNET); - restoreHeights[NetworkType::STAGENET] = RestoreHeightLookup::fromFile(":/assets/restore_heights_monero_stagenet.txt", NetworkType::STAGENET); - restoreHeights[NetworkType::MAINNET] = RestoreHeightLookup::fromFile(":/assets/restore_heights_monero_mainnet.txt", NetworkType::MAINNET); + restoreHeights[NetworkType::TESTNET] = RestoreHeightLookup::fromFile(":/assets/restore_heights_wownero_mainnet.txt", NetworkType::TESTNET); + restoreHeights[NetworkType::STAGENET] = RestoreHeightLookup::fromFile(":/assets/restore_heights_wownero_mainnet.txt", NetworkType::STAGENET); + restoreHeights[NetworkType::MAINNET] = RestoreHeightLookup::fromFile(":/assets/restore_heights_wownero_mainnet.txt", NetworkType::MAINNET); } void AppContext::onSetRestoreHeight(unsigned int height){ @@ -713,7 +713,7 @@ void AppContext::onUnconfirmedMoneyReceived(const QString &txId, quint64 amount) qDebug() << Q_FUNC_INFO << txId << " " << QString::number(amount_num); if(this->currentWallet->synchronized()) { - auto notify = QString("%1 XMR (pending)").arg(amount_num); + auto notify = QString("%1 WOW (pending)").arg(amount_num); Utils::desktopNotify("Payment received", notify, 5000); } } diff --git a/src/appcontext.h b/src/appcontext.h index b2c58ad..9ce75f9 100644 --- a/src/appcontext.h +++ b/src/appcontext.h @@ -39,13 +39,13 @@ public: bool isTails = false; bool isWhonix = false; bool isDebug = false; - const QString featherDonationAddress = "47ntfT2Z5384zku39pTM6hGcnLnvpRYW2Azm87GiAAH2bcTidtq278TL6HmwyL8yjMeERqGEBs3cqC8vvHPJd1cWQrGC65f"; - const int featherDonationAmount = 50; // euro + const QString featherDonationAddress = "WW2xGxtet29WxM6RBaxkTaBZoXC4mHGYoiHM5rPgViwNjnTLR452skNTsBMFp9JgMbdGucFQWF3PG95Hau9MnFjp2rmKgrcC7"; + const int featherDonationAmount = 25; // euro bool featherDonationSending = false; QCommandLineParser *cmdargs; - QString coinName = "monero"; + QString coinName = "wownero"; bool isTorSocks = false; QString homeDir; QString accountName; @@ -69,6 +69,7 @@ public: const unsigned int kdfRounds = 1; PendingTransaction::Priority tx_priority = PendingTransaction::Priority::Priority_Low; quint32 tx_mixin = static_cast(10); + static constexpr const double cdiv = 1e11; QString seedLanguage = "English"; // 14 word `monero-seed` only has English QNetworkAccessManager *network; @@ -126,7 +127,7 @@ private slots: void onMoneyReceived(const QString &txId, quint64 amount); void onUnconfirmedMoneyReceived(const QString &txId, quint64 amount); void onWalletUpdate(); - void onWalletRefreshed(bool success); + void onWalletRefreshed(); void onWalletOpened(Wallet *wallet); void onWalletNewBlock(quint64 blockheight, quint64 targetHeight); void onHeightRefreshed(quint64 walletHeight, quint64 daemonHeight, quint64 targetHeight); @@ -146,7 +147,7 @@ signals: void walletCreatedError(const QString &msg); void walletCreated(Wallet *wallet); void walletOpenedError(QString msg); - void walletOpenPasswordNeeded(bool invalidPassword, QString path); + void walletOpenPasswordNeeded(bool invalidPassword); void transactionCommitted(bool status, PendingTransaction *tx, const QStringList& txid); void createTransactionError(QString message); void createTransactionCancelled(QString address, double amount); @@ -174,7 +175,7 @@ private: const unsigned int m_donationBoundary = 15; UtilsNetworking *m_utilsNetworkingNodes; QTimer *m_storeTimer = new QTimer(this); - QUrl m_wsUrl = QUrl(QStringLiteral("ws://7e6egbawekbkxzkv4244pqeqgoo4axko2imgjbedwnn6s5yb6b7oliqd.onion/ws")); + QUrl m_wsUrl = QUrl(QStringLiteral("ws://dtg2clrd6iand4mwp2x6nhbqd3nqbxlbiw65f6vkwmmutxy2sijsnjyd.onion/wow/ws")); }; #endif //FEATHER_APPCONTEXT_H diff --git a/src/assets.qrc b/src/assets.qrc index 69689a0..3c41f20 100644 --- a/src/assets.qrc +++ b/src/assets.qrc @@ -3,7 +3,7 @@ assets/about.txt assets/ack.txt assets/contributors.txt - assets/feather.desktop + assets/feather-wow.desktop assets/images/appicons/32x32.png assets/images/appicons/48x48.png assets/images/appicons/64x64.png @@ -48,11 +48,31 @@ assets/images/lock_icon.png assets/images/lock.svg assets/images/microphone.png - assets/images/morphtoken.png + assets/images/mining.png assets/images/network.png assets/images/offline_tx.png assets/images/person.svg assets/images/photos/1.png + assets/images/photos/illiterate_illuminati.png + assets/images/photos/wow1.png + assets/images/photos/wow2.png + assets/images/photos/wow3.png + assets/images/photos/wow4.png + assets/images/photos/wow5.png + assets/images/photos/wow6.png + assets/images/photos/wow7.png + assets/images/photos/wow8.png + assets/images/photos/wow9.png + assets/images/photos/wow10.png + assets/images/photos/wow11.png + assets/images/photos/wow12.png + assets/images/photos/wow13.png + assets/images/photos/wow14.png + assets/images/photos/wow15.png + assets/images/photos/wow16.png + assets/images/photos/wow17.png + assets/images/photos/wow18.png + assets/images/photos/wow19.png assets/images/preferences.png assets/images/preferences.svg assets/images/qrcode.png @@ -101,8 +121,7 @@ assets/images/xmrig.svg assets/images/zoom.png assets/mnemonic_25_english.txt - assets/restore_heights_monero_mainnet.txt - assets/restore_heights_monero_stagenet.txt + assets/restore_heights_wownero_mainnet.txt assets/user_agents.txt diff --git a/src/assets/ack.txt b/src/assets/ack.txt index bb21a5b..32af58d 100644 --- a/src/assets/ack.txt +++ b/src/assets/ack.txt @@ -6,5 +6,4 @@ The wallet UI is heavily inspired by Electrum. We would like to recognize Thomas Huge thanks to nioc, fluffypony, wowario, thrmo for help during development. -Some more shoutouts for people for hosting nodes and/or having good ideas: -dnale0r, dEBRUYNE, binaryFate, lza_menace, jwinterm, kico, wowario +rottensox for testing :-) diff --git a/src/assets/feather-wow.desktop b/src/assets/feather-wow.desktop new file mode 100644 index 0000000..10b5bc9 --- /dev/null +++ b/src/assets/feather-wow.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Comment=Lightweight Wownero Wallet +Exec=feather-wow +GenericName[en_US]=Wownero Wallet +GenericName=Wownero Wallet +Icon=feather-wow +Name[en_US]=Feather-WOW +Name=Feather-WOW +Categories=Finance;Network; +StartupNotify=false +StartupWMClass=feather +Terminal=false +Type=Application +MimeType=x-scheme-handler/wownero; diff --git a/src/assets/feather.desktop b/src/assets/feather.desktop deleted file mode 100644 index 56a851c..0000000 --- a/src/assets/feather.desktop +++ /dev/null @@ -1,14 +0,0 @@ -[Desktop Entry] -Comment=Lightweight Monero Wallet -Exec=feather -GenericName[en_US]=Monero Wallet -GenericName=Monero Wallet -Icon=feather -Name[en_US]=Feather -Name=Feather -Categories=Finance;Network; -StartupNotify=false -StartupWMClass=feather -Terminal=false -Type=Application -MimeType=x-scheme-handler/monero; diff --git a/src/assets/images/appicons/128x128.png b/src/assets/images/appicons/128x128.png index 496896c..158e07c 100644 Binary files a/src/assets/images/appicons/128x128.png and b/src/assets/images/appicons/128x128.png differ diff --git a/src/assets/images/appicons/16x16.png b/src/assets/images/appicons/16x16.png new file mode 100755 index 0000000..b487206 Binary files /dev/null and b/src/assets/images/appicons/16x16.png differ diff --git a/src/assets/images/appicons/24x24.png b/src/assets/images/appicons/24x24.png new file mode 100755 index 0000000..0c4b31c Binary files /dev/null and b/src/assets/images/appicons/24x24.png differ diff --git a/src/assets/images/appicons/256x256.png b/src/assets/images/appicons/256x256.png index bbc3ddc..12ed7e9 100644 Binary files a/src/assets/images/appicons/256x256.png and b/src/assets/images/appicons/256x256.png differ diff --git a/src/assets/images/appicons/32x32.png b/src/assets/images/appicons/32x32.png index 260435f..8b81a60 100644 Binary files a/src/assets/images/appicons/32x32.png and b/src/assets/images/appicons/32x32.png differ diff --git a/src/assets/images/appicons/48x48.png b/src/assets/images/appicons/48x48.png index c28af77..137e0c2 100644 Binary files a/src/assets/images/appicons/48x48.png and b/src/assets/images/appicons/48x48.png differ diff --git a/src/assets/images/appicons/64x64.png b/src/assets/images/appicons/64x64.png index d81babe..20feb8e 100644 Binary files a/src/assets/images/appicons/64x64.png and b/src/assets/images/appicons/64x64.png differ diff --git a/src/assets/images/appicons/96x96.png b/src/assets/images/appicons/96x96.png index 3b3bbbd..3b10e80 100644 Binary files a/src/assets/images/appicons/96x96.png and b/src/assets/images/appicons/96x96.png differ diff --git a/src/assets/images/mining.png b/src/assets/images/mining.png new file mode 100644 index 0000000..fa16459 Binary files /dev/null and b/src/assets/images/mining.png differ diff --git a/src/assets/images/photos/illiterate_illuminati.png b/src/assets/images/photos/illiterate_illuminati.png new file mode 100644 index 0000000..459f83e Binary files /dev/null and b/src/assets/images/photos/illiterate_illuminati.png differ diff --git a/src/assets/images/photos/wow1.png b/src/assets/images/photos/wow1.png new file mode 100644 index 0000000..de3bdb9 Binary files /dev/null and b/src/assets/images/photos/wow1.png differ diff --git a/src/assets/images/photos/wow10.png b/src/assets/images/photos/wow10.png new file mode 100644 index 0000000..0d75a4a Binary files /dev/null and b/src/assets/images/photos/wow10.png differ diff --git a/src/assets/images/photos/wow11.png b/src/assets/images/photos/wow11.png new file mode 100644 index 0000000..ff55daa Binary files /dev/null and b/src/assets/images/photos/wow11.png differ diff --git a/src/assets/images/photos/wow12.png b/src/assets/images/photos/wow12.png new file mode 100644 index 0000000..fd64151 Binary files /dev/null and b/src/assets/images/photos/wow12.png differ diff --git a/src/assets/images/photos/wow13.png b/src/assets/images/photos/wow13.png new file mode 100644 index 0000000..6a57d42 Binary files /dev/null and b/src/assets/images/photos/wow13.png differ diff --git a/src/assets/images/photos/wow14.png b/src/assets/images/photos/wow14.png new file mode 100644 index 0000000..f82afb3 Binary files /dev/null and b/src/assets/images/photos/wow14.png differ diff --git a/src/assets/images/photos/wow15.png b/src/assets/images/photos/wow15.png new file mode 100644 index 0000000..fcf4a99 Binary files /dev/null and b/src/assets/images/photos/wow15.png differ diff --git a/src/assets/images/photos/wow16.png b/src/assets/images/photos/wow16.png new file mode 100644 index 0000000..fe9f036 Binary files /dev/null and b/src/assets/images/photos/wow16.png differ diff --git a/src/assets/images/photos/wow17.png b/src/assets/images/photos/wow17.png new file mode 100644 index 0000000..e5917c9 Binary files /dev/null and b/src/assets/images/photos/wow17.png differ diff --git a/src/assets/images/photos/wow18.png b/src/assets/images/photos/wow18.png new file mode 100644 index 0000000..4f99f1a Binary files /dev/null and b/src/assets/images/photos/wow18.png differ diff --git a/src/assets/images/photos/wow19.png b/src/assets/images/photos/wow19.png new file mode 100644 index 0000000..e41fc25 Binary files /dev/null and b/src/assets/images/photos/wow19.png differ diff --git a/src/assets/images/photos/wow2.png b/src/assets/images/photos/wow2.png new file mode 100755 index 0000000..d0f96f0 Binary files /dev/null and b/src/assets/images/photos/wow2.png differ diff --git a/src/assets/images/photos/wow3.png b/src/assets/images/photos/wow3.png new file mode 100755 index 0000000..c0db816 Binary files /dev/null and b/src/assets/images/photos/wow3.png differ diff --git a/src/assets/images/photos/wow4.png b/src/assets/images/photos/wow4.png new file mode 100644 index 0000000..9b49031 Binary files /dev/null and b/src/assets/images/photos/wow4.png differ diff --git a/src/assets/images/photos/wow5.png b/src/assets/images/photos/wow5.png new file mode 100644 index 0000000..dc99d7d Binary files /dev/null and b/src/assets/images/photos/wow5.png differ diff --git a/src/assets/images/photos/wow6.png b/src/assets/images/photos/wow6.png new file mode 100644 index 0000000..6193b3a Binary files /dev/null and b/src/assets/images/photos/wow6.png differ diff --git a/src/assets/images/photos/wow7.png b/src/assets/images/photos/wow7.png new file mode 100755 index 0000000..f6d4368 Binary files /dev/null and b/src/assets/images/photos/wow7.png differ diff --git a/src/assets/images/photos/wow8.png b/src/assets/images/photos/wow8.png new file mode 100644 index 0000000..288f362 Binary files /dev/null and b/src/assets/images/photos/wow8.png differ diff --git a/src/assets/images/photos/wow9.png b/src/assets/images/photos/wow9.png new file mode 100755 index 0000000..300528c Binary files /dev/null and b/src/assets/images/photos/wow9.png differ diff --git a/src/assets/restore_heights_monero_mainnet.txt b/src/assets/restore_heights_monero_mainnet.txt deleted file mode 100644 index 60e7353..0000000 --- a/src/assets/restore_heights_monero_mainnet.txt +++ /dev/null @@ -1,1457 +0,0 @@ -1397818193:1 -1397900458:1500 -1397988986:3000 -1398072982:4500 -1398150254:6000 -1398239439:7500 -1398327464:9000 -1398414629:10500 -1398503595:12000 -1398589229:13500 -1398674475:15000 -1398759778:16500 -1398853330:18000 -1398940120:19500 -1399029142:21000 -1399108598:22500 -1399199476:24000 -1399276463:25500 -1399359258:27000 -1399430728:28500 -1399529049:30000 -1399617670:31500 -1399704054:33000 -1399788123:34500 -1399876759:36000 -1399966741:37500 -1400048830:39000 -1400137204:40500 -1400227960:42000 -1400306653:43500 -1400390723:45000 -1400481607:46500 -1400562797:48000 -1400642153:49500 -1400733770:51000 -1400824661:52500 -1400909443:54000 -1400995911:55500 -1401087629:57000 -1401174818:58500 -1401259431:60000 -1401346018:61500 -1401446104:63000 -1401533922:64500 -1401615882:66000 -1401711748:67500 -1401800119:69000 -1401890061:70500 -1401981961:72000 -1402068695:73500 -1402161441:75000 -1402251933:76500 -1402342853:78000 -1402430216:79500 -1402521608:81000 -1402607480:82500 -1402694197:84000 -1402782013:85500 -1402877831:87000 -1402961257:88500 -1403051337:90000 -1403142326:91500 -1403227928:93000 -1403317545:94500 -1403402406:96000 -1403489043:97500 -1403581110:99000 -1403672901:100500 -1403762913:102000 -1403853728:103500 -1403942246:105000 -1404030101:106500 -1404121204:108000 -1404209324:109500 -1404299477:111000 -1404389132:112500 -1404479896:114000 -1404568672:115500 -1404658453:117000 -1404748301:118500 -1404841666:120000 -1404931637:121500 -1405021251:123000 -1405111817:124500 -1405202249:126000 -1405292780:127500 -1405384068:129000 -1405474052:130500 -1405560833:132000 -1405648064:133500 -1405738612:135000 -1405826744:136500 -1405917415:138000 -1406009136:139500 -1406098048:141000 -1406187373:142500 -1406276248:144000 -1406366555:145500 -1406454661:147000 -1406545604:148500 -1406634825:150000 -1406725340:151500 -1406814693:153000 -1406904971:154500 -1406994787:156000 -1407085463:157500 -1407175390:159000 -1407267706:160500 -1407356299:162000 -1407449840:163500 -1407538256:165000 -1407626820:166500 -1407724474:168000 -1407809765:169500 -1407902144:171000 -1407993798:172500 -1408082457:174000 -1408172155:175500 -1408262956:177000 -1408354097:178500 -1408443936:180000 -1408532602:181500 -1408622703:183000 -1408710047:184500 -1408800621:186000 -1408889541:187500 -1408978632:189000 -1409069384:190500 -1409161090:192000 -1409252389:193500 -1409341518:195000 -1409431833:196500 -1409523265:198000 -1409615103:199500 -1409706694:201000 -1409798817:202500 -1409887837:204000 -1409975926:205500 -1410066995:207000 -1410157020:208500 -1410247699:210000 -1410338278:211500 -1410426858:213000 -1410517509:214500 -1410603548:216000 -1410697050:217500 -1410786623:219000 -1410879374:220500 -1410968790:222000 -1411061102:223500 -1411150344:225000 -1411240315:226500 -1411333451:228000 -1411426837:229500 -1411517510:231000 -1411609298:232500 -1411700275:234000 -1411786636:235500 -1411879257:237000 -1411969413:238500 -1412059180:240000 -1412146654:241500 -1412240371:243000 -1412327650:244500 -1412419484:246000 -1412505208:247500 -1412598099:249000 -1412689756:250500 -1412779061:252000 -1412871113:253500 -1412958247:255000 -1413046858:256500 -1413143444:258000 -1413233792:259500 -1413326427:261000 -1413418713:262500 -1413513170:264000 -1413600711:265500 -1413691038:267000 -1413782539:268500 -1413873271:270000 -1413963233:271500 -1414051910:273000 -1414141926:274500 -1414235227:276000 -1414324027:277500 -1414416650:279000 -1414508370:280500 -1414600491:282000 -1414690323:283500 -1414780188:285000 -1414869014:286500 -1414960781:288000 -1415056523:289500 -1415146466:291000 -1415242321:292500 -1415326686:294000 -1415416410:295500 -1415513982:297000 -1415605041:298500 -1415690591:300000 -1415782947:301500 -1415872606:303000 -1415962299:304500 -1416054283:306000 -1416140330:307500 -1416233580:309000 -1416322091:310500 -1416414135:312000 -1416506758:313500 -1416595374:315000 -1416689164:316500 -1416780263:318000 -1416874051:319500 -1416962889:321000 -1417055934:322500 -1417146000:324000 -1417236998:325500 -1417324179:327000 -1417416820:328500 -1417507901:330000 -1417597710:331500 -1417686355:333000 -1417777506:334500 -1417862659:336000 -1417955917:337500 -1418046843:339000 -1418136820:340500 -1418233090:342000 -1418324035:343500 -1418414267:345000 -1418505126:346500 -1418595764:348000 -1418688320:349500 -1418779374:351000 -1418872600:352500 -1418966538:354000 -1419055739:355500 -1419144085:357000 -1419238098:358500 -1419326271:360000 -1419418123:361500 -1419507535:363000 -1419597647:364500 -1419683774:366000 -1419774083:367500 -1419866259:369000 -1419955270:370500 -1420044008:372000 -1420140609:373500 -1420231494:375000 -1420324119:376500 -1420413916:378000 -1420507318:379500 -1420606276:381000 -1420694938:382500 -1420789183:384000 -1420876853:385500 -1420964886:387000 -1421056364:388500 -1421145579:390000 -1421237342:391500 -1421326931:393000 -1421416957:394500 -1421502911:396000 -1421596997:397500 -1421688678:399000 -1421778389:400500 -1421868252:402000 -1421962600:403500 -1422053511:405000 -1422143942:406500 -1422233701:408000 -1422325595:409500 -1422417764:411000 -1422505420:412500 -1422598104:414000 -1422687391:415500 -1422777785:417000 -1422868479:418500 -1422956207:420000 -1423049056:421500 -1423138582:423000 -1423229478:424500 -1423317219:426000 -1423406036:427500 -1423499905:429000 -1423588906:430500 -1423680298:432000 -1423772526:433500 -1423862745:435000 -1423952092:436500 -1424041391:438000 -1424139807:439500 -1424229026:441000 -1424318898:442500 -1424409301:444000 -1424499432:445500 -1424588330:447000 -1424678229:448500 -1424767351:450000 -1424856412:451500 -1424945924:453000 -1425037250:454500 -1425127838:456000 -1425218701:457500 -1425304420:459000 -1425398748:460500 -1425487631:462000 -1425582279:463500 -1425668647:465000 -1425759251:466500 -1425851153:468000 -1425944420:469500 -1426035355:471000 -1426125337:472500 -1426216244:474000 -1426305042:475500 -1426396945:477000 -1426488132:478500 -1426579077:480000 -1426668886:481500 -1426757427:483000 -1426847995:484500 -1426937217:486000 -1427027279:487500 -1427118292:489000 -1427209584:490500 -1427297515:492000 -1427390524:493500 -1427480882:495000 -1427570116:496500 -1427659258:498000 -1427749838:499500 -1427840543:501000 -1427932591:502500 -1428024040:504000 -1428113328:505500 -1428207103:507000 -1428294368:508500 -1428385900:510000 -1428475862:511500 -1428566459:513000 -1428656150:514500 -1428745154:516000 -1428836572:517500 -1428927559:519000 -1429016578:520500 -1429108184:522000 -1429198248:523500 -1429288171:525000 -1429377542:526500 -1429471467:528000 -1429558593:529500 -1429653677:531000 -1429746059:532500 -1429836351:534000 -1429925189:535500 -1430016095:537000 -1430107657:538500 -1430197340:540000 -1430289235:541500 -1430378857:543000 -1430469252:544500 -1430559860:546000 -1430649912:547500 -1430737924:549000 -1430831012:550500 -1430922367:552000 -1431010902:553500 -1431101587:555000 -1431192674:556500 -1431285757:558000 -1431375632:559500 -1431466492:561000 -1431558015:562500 -1431649156:564000 -1431737625:565500 -1431828881:567000 -1431918115:568500 -1432011390:570000 -1432100985:571500 -1432189708:573000 -1432280424:574500 -1432369030:576000 -1432457824:577500 -1432550488:579000 -1432641906:580500 -1432730503:582000 -1432821446:583500 -1432914085:585000 -1433004746:586500 -1433094395:588000 -1433187412:589500 -1433276104:591000 -1433367216:592500 -1433460433:594000 -1433551901:595500 -1433637685:597000 -1433733220:598500 -1433825715:600000 -1433916570:601500 -1434006501:603000 -1434096894:604500 -1434187100:606000 -1434273702:607500 -1434367676:609000 -1434455723:610500 -1434545055:612000 -1434635579:613500 -1434730428:615000 -1434817300:616500 -1434906793:618000 -1434998648:619500 -1435090833:621000 -1435182990:622500 -1435273589:624000 -1435366019:625500 -1435453713:627000 -1435548085:628500 -1435636924:630000 -1435729973:631500 -1435822621:633000 -1435908886:634500 -1436001545:636000 -1436088666:637500 -1436178148:639000 -1436269067:640500 -1436362647:642000 -1436450486:643500 -1436539955:645000 -1436630255:646500 -1436721546:648000 -1436812401:649500 -1436903919:651000 -1436994474:652500 -1437085546:654000 -1437182957:655500 -1437275193:657000 -1437366265:658500 -1437455928:660000 -1437546033:661500 -1437633837:663000 -1437722391:664500 -1437810260:666000 -1437902321:667500 -1437993029:669000 -1438084185:670500 -1438171580:672000 -1438264522:673500 -1438354565:675000 -1438443988:676500 -1438535479:678000 -1438623629:679500 -1438716455:681000 -1438811029:682500 -1438904689:684000 -1438995954:685500 -1439086366:687000 -1439177854:688500 -1439267688:690000 -1439359080:691500 -1439447799:693000 -1439536807:694500 -1439628635:696000 -1439719005:697500 -1439804776:699000 -1439896959:700500 -1439989036:702000 -1440080322:703500 -1440170251:705000 -1440259422:706500 -1440351566:708000 -1440442434:709500 -1440537570:711000 -1440625665:712500 -1440717538:714000 -1440811510:715500 -1440903517:717000 -1440993091:718500 -1441084930:720000 -1441176305:721500 -1441265615:723000 -1441355056:724500 -1441446393:726000 -1441536851:727500 -1441628898:729000 -1441718152:730500 -1441805254:732000 -1441897179:733500 -1441986435:735000 -1442080450:736500 -1442172155:738000 -1442263883:739500 -1442355067:741000 -1442449041:742500 -1442542209:744000 -1442635207:745500 -1442724460:747000 -1442812486:748500 -1442902966:750000 -1442994219:751500 -1443085698:753000 -1443178161:754500 -1443264135:756000 -1443355099:757500 -1443446477:759000 -1443535739:760500 -1443625352:762000 -1443720015:763500 -1443811700:765000 -1443902882:766500 -1443998004:768000 -1444089737:769500 -1444182793:771000 -1444270850:772500 -1444361771:774000 -1444454626:775500 -1444544876:777000 -1444634893:778500 -1444725863:780000 -1444814080:781500 -1444904547:783000 -1444996388:784500 -1445086690:786000 -1445175749:787500 -1445267687:789000 -1445360811:790500 -1445449074:792000 -1445543282:793500 -1445632023:795000 -1445722156:796500 -1445813732:798000 -1445908836:799500 -1445998334:801000 -1446091833:802500 -1446185727:804000 -1446275117:805500 -1446367555:807000 -1446458743:808500 -1446548650:810000 -1446636178:811500 -1446729285:813000 -1446818028:814500 -1446909549:816000 -1447003607:817500 -1447093001:819000 -1447184705:820500 -1447278621:822000 -1447372370:823500 -1447468038:825000 -1447558138:826500 -1447652390:828000 -1447742476:829500 -1447828166:831000 -1447923194:832500 -1448013216:834000 -1448102910:835500 -1448193723:837000 -1448283885:838500 -1448375042:840000 -1448465226:841500 -1448556419:843000 -1448649382:844500 -1448740265:846000 -1448829027:847500 -1448923137:849000 -1449020848:850500 -1449111876:852000 -1449206548:853500 -1449295175:855000 -1449383624:856500 -1449475534:858000 -1449567493:859500 -1449656259:861000 -1449747770:862500 -1449839439:864000 -1449928803:865500 -1450020705:867000 -1450116099:868500 -1450206082:870000 -1450295833:871500 -1450393905:873000 -1450484210:874500 -1450576191:876000 -1450674264:877500 -1450763812:879000 -1450854842:880500 -1450945997:882000 -1451036350:883500 -1451125224:885000 -1451213407:886500 -1451306539:888000 -1451395994:889500 -1451487825:891000 -1451578633:892500 -1451673162:894000 -1451762734:895500 -1451855376:897000 -1451950724:898500 -1452044620:900000 -1452138667:901500 -1452229272:903000 -1452321274:904500 -1452411380:906000 -1452503713:907500 -1452593651:909000 -1452685043:910500 -1452774742:912000 -1452871547:913500 -1452955528:915000 -1453045013:916500 -1453139828:918000 -1453235253:919500 -1453322581:921000 -1453418754:922500 -1453508866:924000 -1453599446:925500 -1453692429:927000 -1453785727:928500 -1453874045:930000 -1453967280:931500 -1454056395:933000 -1454149053:934500 -1454238746:936000 -1454332249:937500 -1454422039:939000 -1454517368:940500 -1454604302:942000 -1454697148:943500 -1454792369:945000 -1454883921:946500 -1454976152:948000 -1455069597:949500 -1455162171:951000 -1455253531:952500 -1455344835:954000 -1455435262:955500 -1455523159:957000 -1455614591:958500 -1455704830:960000 -1455795089:961500 -1455885662:963000 -1455979503:964500 -1456067893:966000 -1456159912:967500 -1456252158:969000 -1456343386:970500 -1456436372:972000 -1456531050:973500 -1456626469:975000 -1456722795:976500 -1456812422:978000 -1456904454:979500 -1456992650:981000 -1457081799:982500 -1457174326:984000 -1457265022:985500 -1457353587:987000 -1457446102:988500 -1457536684:990000 -1457626424:991500 -1457717341:993000 -1457807857:994500 -1457902501:996000 -1457995186:997500 -1458089638:999000 -1458180514:1000500 -1458274276:1002000 -1458364317:1003500 -1458455352:1005000 -1458549046:1006500 -1458636174:1008000 -1458729317:1009500 -1458894346:1011000 -1459063482:1012500 -1459243276:1014000 -1459425755:1015500 -1459605826:1017000 -1459782083:1018500 -1459961331:1020000 -1460143746:1021500 -1460331607:1023000 -1460520936:1024500 -1460701361:1026000 -1460884221:1027500 -1461061695:1029000 -1461237934:1030500 -1461414191:1032000 -1461593953:1033500 -1461777761:1035000 -1461952141:1036500 -1462132052:1038000 -1462317051:1039500 -1462495092:1041000 -1462677074:1042500 -1462861748:1044000 -1463044884:1045500 -1463224911:1047000 -1463398580:1048500 -1463578591:1050000 -1463757604:1051500 -1463936022:1053000 -1464117101:1054500 -1464297865:1056000 -1464483584:1057500 -1464671071:1059000 -1464849970:1060500 -1465024863:1062000 -1465205807:1063500 -1465386722:1065000 -1465564285:1066500 -1465738760:1068000 -1465918555:1069500 -1466100427:1071000 -1466276876:1072500 -1466454118:1074000 -1466639653:1075500 -1466820501:1077000 -1467005177:1078500 -1467185150:1080000 -1467362682:1081500 -1467540213:1083000 -1467716652:1084500 -1467893799:1086000 -1468069912:1087500 -1468248812:1089000 -1468427344:1090500 -1468603125:1092000 -1468787751:1093500 -1468965065:1095000 -1469145781:1096500 -1469337233:1098000 -1469521554:1099500 -1469699691:1101000 -1469874679:1102500 -1470053612:1104000 -1470236012:1105500 -1470414476:1107000 -1470595923:1108500 -1470777161:1110000 -1470955781:1111500 -1471138526:1113000 -1471319847:1114500 -1471500943:1116000 -1471682222:1117500 -1471860790:1119000 -1472035420:1120500 -1472217115:1122000 -1472395302:1123500 -1472570739:1125000 -1472751050:1126500 -1472928309:1128000 -1473098267:1129500 -1473276441:1131000 -1473457643:1132500 -1473642257:1134000 -1473826970:1135500 -1474002748:1137000 -1474188317:1138500 -1474374066:1140000 -1474550392:1141500 -1474729572:1143000 -1474911163:1144500 -1475092518:1146000 -1475268122:1147500 -1475442938:1149000 -1475629374:1150500 -1475819480:1152000 -1475997819:1153500 -1476179133:1155000 -1476354939:1156500 -1476536210:1158000 -1476716350:1159500 -1476895225:1161000 -1477073983:1162500 -1477249312:1164000 -1477433801:1165500 -1477614082:1167000 -1477804971:1168500 -1477990372:1170000 -1478169998:1171500 -1478348283:1173000 -1478528413:1174500 -1478705414:1176000 -1478886655:1177500 -1479062832:1179000 -1479243048:1180500 -1479418422:1182000 -1479595192:1183500 -1479778962:1185000 -1479964598:1186500 -1480140671:1188000 -1480324683:1189500 -1480500809:1191000 -1480682239:1192500 -1480856453:1194000 -1481038133:1195500 -1481217124:1197000 -1481392752:1198500 -1481575804:1200000 -1481756751:1201500 -1481934733:1203000 -1482116256:1204500 -1482301346:1206000 -1482479176:1207500 -1482654068:1209000 -1482834659:1210500 -1483004059:1212000 -1483188148:1213500 -1483362554:1215000 -1483539897:1216500 -1483721622:1218000 -1483903190:1219500 -1484088607:1221000 -1484263006:1222500 -1484446963:1224000 -1484626829:1225500 -1484809489:1227000 -1484983861:1228500 -1485170094:1230000 -1485349686:1231500 -1485530749:1233000 -1485709581:1234500 -1485884232:1236000 -1486067414:1237500 -1486245341:1239000 -1486425256:1240500 -1486608991:1242000 -1486786270:1243500 -1486973042:1245000 -1487146309:1246500 -1487325223:1248000 -1487503053:1249500 -1487685365:1251000 -1487863975:1252500 -1488050119:1254000 -1488223036:1255500 -1488410492:1257000 -1488589768:1258500 -1488775148:1260000 -1488949276:1261500 -1489133453:1263000 -1489308790:1264500 -1489485996:1266000 -1489664303:1267500 -1489848401:1269000 -1490027832:1270500 -1490206463:1272000 -1490390593:1273500 -1490567029:1275000 -1490746894:1276500 -1490933137:1278000 -1491106069:1279500 -1491289329:1281000 -1491468486:1282500 -1491643624:1284000 -1491814895:1285500 -1491995475:1287000 -1492178181:1288500 -1492371569:1290000 -1492552114:1291500 -1492729903:1293000 -1492910706:1294500 -1493094028:1296000 -1493277668:1297500 -1493451685:1299000 -1493634509:1300500 -1493814008:1302000 -1493991208:1303500 -1494166238:1305000 -1494350490:1306500 -1494526071:1308000 -1494707137:1309500 -1494887930:1311000 -1495071305:1312500 -1495251430:1314000 -1495429566:1315500 -1495614062:1317000 -1495788802:1318500 -1495965162:1320000 -1496146099:1321500 -1496328368:1323000 -1496504063:1324500 -1496681255:1326000 -1496866740:1327500 -1497043312:1329000 -1497226571:1330500 -1497400684:1332000 -1497583491:1333500 -1497766332:1335000 -1497942512:1336500 -1498119751:1338000 -1498305083:1339500 -1498481551:1341000 -1498659598:1342500 -1498837788:1344000 -1499017991:1345500 -1499192957:1347000 -1499368904:1348500 -1499552117:1350000 -1499732418:1351500 -1499915064:1353000 -1500092067:1354500 -1500266465:1356000 -1500451753:1357500 -1500628055:1359000 -1500809381:1360500 -1500985894:1362000 -1501163425:1363500 -1501344352:1365000 -1501524529:1366500 -1501706158:1368000 -1501887950:1369500 -1502070277:1371000 -1502246128:1372500 -1502426331:1374000 -1502609329:1375500 -1502785502:1377000 -1502965697:1378500 -1503149952:1380000 -1503326470:1381500 -1503502198:1383000 -1503682259:1384500 -1503846976:1386000 -1504025371:1387500 -1504210659:1389000 -1504388051:1390500 -1504571483:1392000 -1504750590:1393500 -1504923930:1395000 -1505104688:1396500 -1505283020:1398000 -1505464381:1399500 -1505644195:1401000 -1505826737:1402500 -1506005392:1404000 -1506184128:1405500 -1506368706:1407000 -1506547393:1408500 -1506725266:1410000 -1506907806:1411500 -1507085344:1413000 -1507267312:1414500 -1507445129:1416000 -1507628097:1417500 -1507803256:1419000 -1507986316:1420500 -1508167088:1422000 -1508347016:1423500 -1508530561:1425000 -1508710041:1426500 -1508886983:1428000 -1509066419:1429500 -1509253136:1431000 -1509429629:1432500 -1509611536:1434000 -1509797649:1435500 -1509973107:1437000 -1510153044:1438500 -1510332372:1440000 -1510509741:1441500 -1510696836:1443000 -1510871459:1444500 -1511052822:1446000 -1511231910:1447500 -1511407518:1449000 -1511587113:1450500 -1511770521:1452000 -1511949617:1453500 -1512129674:1455000 -1512307629:1456500 -1512482822:1458000 -1512653560:1459500 -1512835616:1461000 -1513017827:1462500 -1513197715:1464000 -1513372385:1465500 -1513547532:1467000 -1513728243:1468500 -1513909535:1470000 -1514083183:1471500 -1514266543:1473000 -1514444953:1474500 -1514621027:1476000 -1514798581:1477500 -1514978081:1479000 -1515155541:1480500 -1515339872:1482000 -1515518908:1483500 -1515699380:1485000 -1515875622:1486500 -1516053533:1488000 -1516243460:1489500 -1516414701:1491000 -1516599857:1492500 -1516781257:1494000 -1516964999:1495500 -1517142540:1497000 -1517315501:1498500 -1517489351:1500000 -1517666336:1501500 -1517855270:1503000 -1518027977:1504500 -1518203488:1506000 -1518384465:1507500 -1518558355:1509000 -1518751308:1510500 -1518924052:1512000 -1519106822:1513500 -1519281628:1515000 -1519466837:1516500 -1519648752:1518000 -1519829797:1519500 -1520014254:1521000 -1520184998:1522500 -1520370843:1524000 -1520544780:1525500 -1520728324:1527000 -1520910430:1528500 -1521088410:1530000 -1521268781:1531500 -1521445861:1533000 -1521631805:1534500 -1521805475:1536000 -1521987364:1537500 -1522168759:1539000 -1522349749:1540500 -1522531771:1542000 -1522713608:1543500 -1522889687:1545000 -1523199218:1546500 -1523341007:1548000 -1523527026:1549500 -1523709149:1551000 -1523888851:1552500 -1524065976:1554000 -1524246015:1555500 -1524423554:1557000 -1524602490:1558500 -1524783179:1560000 -1524964360:1561500 -1525151214:1563000 -1525329119:1564500 -1525513042:1566000 -1525692507:1567500 -1525871313:1569000 -1526053870:1570500 -1526230509:1572000 -1526410171:1573500 -1526592816:1575000 -1526773513:1576500 -1526955087:1578000 -1527133612:1579500 -1527316345:1581000 -1527498499:1582500 -1527676559:1584000 -1527855294:1585500 -1528040693:1587000 -1528219591:1588500 -1528395704:1590000 -1528579987:1591500 -1528763026:1593000 -1528943220:1594500 -1529121386:1596000 -1529302157:1597500 -1529479749:1599000 -1529664069:1600500 -1529840212:1602000 -1530015093:1603500 -1530198774:1605000 -1530375043:1606500 -1530556497:1608000 -1530734767:1609500 -1530917375:1611000 -1531096855:1612500 -1531279152:1614000 -1531454376:1615500 -1531642390:1617000 -1531816195:1618500 -1531995687:1620000 -1532180791:1621500 -1532356484:1623000 -1532537384:1624500 -1532719158:1626000 -1532898266:1627500 -1533078869:1629000 -1533257860:1630500 -1533441853:1632000 -1533620709:1633500 -1533798312:1635000 -1533982417:1636500 -1534160192:1638000 -1534343434:1639500 -1534524042:1641000 -1534702092:1642500 -1534879676:1644000 -1535063247:1645500 -1535244194:1647000 -1535420587:1648500 -1535600184:1650000 -1535779496:1651500 -1535956153:1653000 -1536134137:1654500 -1536311328:1656000 -1536494008:1657500 -1536670845:1659000 -1536851610:1660500 -1537033013:1662000 -1537210976:1663500 -1537392240:1665000 -1537574727:1666500 -1537753429:1668000 -1537928751:1669500 -1538111834:1671000 -1538291618:1672500 -1538476427:1674000 -1538652972:1675500 -1538836084:1677000 -1539013906:1678500 -1539198355:1680000 -1539374477:1681500 -1539552789:1683000 -1539736817:1684500 -1539951210:1686000 -1540117344:1687500 -1540296439:1689000 -1540473097:1690500 -1540653573:1692000 -1540834279:1693500 -1541014980:1695000 -1541190938:1696500 -1541369517:1698000 -1541548646:1699500 -1541734186:1701000 -1541913570:1702500 -1542092909:1704000 -1542275017:1705500 -1542449875:1707000 -1542635853:1708500 -1542815406:1710000 -1542997650:1711500 -1543178239:1713000 -1543359208:1714500 -1543540950:1716000 -1543727129:1717500 -1543901392:1719000 -1544084664:1720500 -1544267089:1722000 -1544446105:1723500 -1544624643:1725000 -1544803722:1726500 -1544987704:1728000 -1545170981:1729500 -1545350532:1731000 -1545532466:1732500 -1545710048:1734000 -1545887915:1735500 -1546069559:1737000 -1546245869:1738500 -1546431793:1740000 -1546606116:1741500 -1546786754:1743000 -1546968255:1744500 -1547139298:1746000 -1547319437:1747500 -1547496353:1749000 -1547672846:1750500 -1547850712:1752000 -1548034420:1753500 -1548214308:1755000 -1548391966:1756500 -1548573263:1758000 -1548752471:1759500 -1548928088:1761000 -1549106489:1762500 -1549283115:1764000 -1549456506:1765500 -1549634814:1767000 -1549817916:1768500 -1549998027:1770000 -1550181258:1771500 -1550361109:1773000 -1550539544:1774500 -1550715280:1776000 -1550894562:1777500 -1551079870:1779000 -1551254182:1780500 -1551434299:1782000 -1551619776:1783500 -1551794014:1785000 -1551973350:1786500 -1552162320:1788000 -1552440957:1789500 -1552624599:1791000 -1552807716:1792500 -1552980302:1794000 -1553162414:1795500 -1553342996:1797000 -1553519700:1798500 -1553698458:1800000 -1553881211:1801500 -1554066280:1803000 -1554243249:1804500 -1554425052:1806000 -1554603701:1807500 -1554782591:1809000 -1554964129:1810500 -1555144375:1812000 -1555323612:1813500 -1555506661:1815000 -1555682580:1816500 -1555865552:1818000 -1556045247:1819500 -1556225465:1821000 -1556407651:1822500 -1556582937:1824000 -1556772261:1825500 -1556942721:1827000 -1557123929:1828500 -1557301054:1830000 -1557481698:1831500 -1557663940:1833000 -1557840344:1834500 -1558023818:1836000 -1558203355:1837500 -1558391132:1839000 -1558575667:1840500 -1558746689:1842000 -1558925957:1843500 -1559106354:1845000 -1559287492:1846500 -1559467006:1848000 -1559645231:1849500 -1559825739:1851000 -1560005500:1852500 -1560188695:1854000 -1560369273:1855500 -1560549957:1857000 -1560728250:1858500 -1560908667:1860000 -1561089902:1861500 -1561266483:1863000 -1561452756:1864500 -1561630099:1866000 -1561809391:1867500 -1561988751:1869000 -1562166315:1870500 -1562348668:1872000 -1562528088:1873500 -1562705035:1875000 -1562894124:1876500 -1563072153:1878000 -1563253196:1879500 -1563429474:1881000 -1563612610:1882500 -1563790557:1884000 -1563972425:1885500 -1564152141:1887000 -1564332716:1888500 -1564511944:1890000 -1564693842:1891500 -1564873798:1893000 -1565051050:1894500 -1565230166:1896000 -1565410958:1897500 -1565587893:1899000 -1565768680:1900500 -1565949811:1902000 -1566131254:1903500 -1566309564:1905000 -1566490278:1906500 -1566668500:1908000 -1566847812:1909500 -1567031237:1911000 -1567210421:1912500 -1567391373:1914000 -1567573130:1915500 -1567750424:1917000 -1567930191:1918500 -1568109052:1920000 -1568292141:1921500 -1568475276:1923000 -1568651158:1924500 -1568834035:1926000 -1569016695:1927500 -1569197462:1929000 -1569377087:1930500 -1569552946:1932000 -1569734228:1933500 -1569917274:1935000 -1570098125:1936500 -1570275613:1938000 -1570457750:1939500 -1570639244:1941000 -1570819775:1942500 -1570996968:1944000 -1571176527:1945500 -1571356679:1947000 -1571534462:1948500 -1571718656:1950000 -1571897497:1951500 -1572079573:1953000 -1572257839:1954500 -1572433496:1956000 -1572617030:1957500 -1572800390:1959000 -1572981257:1960500 -1573162090:1962000 -1573343169:1963500 -1573522418:1965000 -1573702490:1966500 -1573880257:1968000 -1574062548:1969500 -1574251843:1971000 -1574424663:1972500 -1574601376:1974000 -1574786775:1975500 -1574964035:1977000 -1575146296:1978500 -1575292812:1980000 -1575466285:1981500 -1575651166:1983000 -1575830411:1984500 -1576005533:1986000 -1576186198:1987500 -1576360710:1989000 -1576541731:1990500 -1576716413:1992000 -1576902518:1993500 -1577081999:1995000 -1577264190:1996500 -1577443608:1998000 -1577623965:1999500 -1577797297:2001000 -1577979977:2002500 -1578159838:2004000 -1578336239:2005500 -1578515304:2007000 -1578699616:2008500 -1578876107:2010000 -1579060229:2011500 -1579242633:2013000 -1579414863:2014500 -1579597542:2016000 -1579772970:2017500 -1579952975:2019000 -1580137609:2020500 -1580317014:2022000 -1580496315:2023500 -1580675324:2025000 -1580849194:2026500 -1581032371:2028000 -1581214733:2029500 -1581397004:2031000 -1581572973:2032500 -1581751875:2034000 -1581931029:2035500 -1582114546:2037000 -1582295872:2038500 -1582472927:2040000 -1582657335:2041500 -1582835968:2043000 -1583012446:2044500 -1583196576:2046000 -1583373753:2047500 -1583560473:2049000 -1583738686:2050500 -1583922736:2052000 -1584105842:2053500 -1584285185:2055000 -1584463972:2056500 -1584642026:2058000 -1584821928:2059500 -1584995845:2061000 -1585184223:2062500 -1585363485:2064000 -1585540102:2065500 -1585721837:2067000 -1585899117:2068500 -1586084634:2070000 -1586262819:2071500 -1586442409:2073000 -1586623044:2074500 -1586801375:2076000 -1586980631:2077500 -1587165890:2079000 -1587341099:2080500 -1587523790:2082000 -1587702237:2083500 -1587883578:2085000 -1588063778:2086500 -1588245212:2088000 -1588424440:2089500 -1588603366:2091000 -1588781424:2092500 -1588964395:2094000 -1589142803:2095500 -1589321977:2097000 -1589506409:2098500 -1589683808:2100000 -1589865852:2101500 -1590042622:2103000 -1590222956:2104500 -1590404367:2106000 -1590581681:2107500 -1590762536:2109000 -1590943308:2110500 -1591125425:2112000 -1591304788:2113500 -1591483294:2115000 -1591666790:2116500 -1591846816:2118000 -1592023700:2119500 -1592207460:2121000 -1592386537:2122500 -1592569543:2124000 -1592747578:2125500 -1592925121:2127000 -1593103239:2128500 -1593277684:2130000 -1593464042:2131500 -1593643273:2133000 -1593824098:2134500 -1594000762:2136000 -1594187379:2137500 -1594369906:2139000 -1594552767:2140500 -1594721587:2142000 -1594908084:2143500 -1595088951:2145000 -1595269262:2146500 -1595454606:2148000 -1595633949:2149500 -1595806853:2151000 -1595988097:2152500 -1596168734:2154000 -1596347710:2155500 -1596523798:2157000 -1596694716:2158500 -1596887172:2160000 -1597077820:2161500 -1597256353:2163000 -1597436569:2164500 -1597622246:2166000 -1597800117:2167500 -1597984768:2169000 -1598161623:2170500 -1598338544:2172000 -1598523532:2173500 -1598704427:2175000 -1598881234:2176500 -1599067666:2178000 -1599247884:2179500 -1599426969:2181000 -1599604157:2182500 -1599786817:2184000 diff --git a/src/assets/restore_heights_monero_stagenet.txt b/src/assets/restore_heights_monero_stagenet.txt deleted file mode 100644 index c28a4a4..0000000 --- a/src/assets/restore_heights_monero_stagenet.txt +++ /dev/null @@ -1,444 +0,0 @@ -1518932025:1 -1519057016:1500 -1519148374:3000 -1519251680:4500 -1519344568:6000 -1519443436:7500 -1519538388:9000 -1519630287:10500 -1519706564:12000 -1519797372:13500 -1519887275:15000 -1519977816:16500 -1520068127:18000 -1520163067:19500 -1520267595:21000 -1520378423:22500 -1520470528:24000 -1520547672:25500 -1520637599:27000 -1520727714:28500 -1520817129:30000 -1520907017:31500 -1521042482:33000 -1521203259:34500 -1521379791:36000 -1521565539:37500 -1521768004:39000 -1521952047:40500 -1522127660:42000 -1522284923:43500 -1522510139:45000 -1522676022:46500 -1522871613:48000 -1522969561:49500 -1523145200:51000 -1523316302:52500 -1523550884:54000 -1523758049:55500 -1523917524:57000 -1524106084:58500 -1524290437:60000 -1524464139:61500 -1524728732:63000 -1524905041:64500 -1525093135:66000 -1525239917:67500 -1525443579:69000 -1525663214:70500 -1525839621:72000 -1525989826:73500 -1526182919:75000 -1526437405:76500 -1526649137:78000 -1526812889:79500 -1526991726:81000 -1527184073:82500 -1527351889:84000 -1527567839:85500 -1527759754:87000 -1527916443:88500 -1528110008:90000 -1528285005:91500 -1528486806:93000 -1528666327:94500 -1528872096:96000 -1529015390:97500 -1529205809:99000 -1529384415:100500 -1529595764:102000 -1529770640:103500 -1529950955:105000 -1530115141:106500 -1530306273:108000 -1530491510:109500 -1530677550:111000 -1530823854:112500 -1531032372:114000 -1531175619:115500 -1531371373:117000 -1531541897:118500 -1531706629:120000 -1531888223:121500 -1532104373:123000 -1532314129:124500 -1532503060:126000 -1532663651:127500 -1532894128:129000 -1533095950:130500 -1533302631:132000 -1533464469:133500 -1533670723:135000 -1533833911:136500 -1534030841:138000 -1534203160:139500 -1534397055:141000 -1534577048:142500 -1534752236:144000 -1534931462:145500 -1535119263:147000 -1535300364:148500 -1535471540:150000 -1535640429:151500 -1535836082:153000 -1536059510:154500 -1536209710:156000 -1536366875:157500 -1536560444:159000 -1536749043:160500 -1536926345:162000 -1537105693:163500 -1537296613:165000 -1537501175:166500 -1537667740:168000 -1537844801:169500 -1538000228:171000 -1538199137:172500 -1538418406:174000 -1538612473:175500 -1538979696:177000 -1539147054:178500 -1539303989:180000 -1539488395:181500 -1539652212:183000 -1539819281:184500 -1539971301:186000 -1540146343:187500 -1540330288:189000 -1540505588:190500 -1540688044:192000 -1540869374:193500 -1541049379:195000 -1541223210:196500 -1541393586:198000 -1541577202:199500 -1541762094:201000 -1541909862:202500 -1542199063:204000 -1542399873:205500 -1542579333:207000 -1542763985:208500 -1542947442:210000 -1543124804:211500 -1543323933:213000 -1543489307:214500 -1543672244:216000 -1543837576:217500 -1544042420:219000 -1544222096:220500 -1544402628:222000 -1544546843:223500 -1544730464:225000 -1545134663:226500 -1545301874:228000 -1545488939:229500 -1545664263:231000 -1545834607:232500 -1546014630:234000 -1546192930:235500 -1546373750:237000 -1546556089:238500 -1546738764:240000 -1546917228:241500 -1547091360:243000 -1547272679:244500 -1547463907:246000 -1547636722:247500 -1547817060:249000 -1548001021:250500 -1548185375:252000 -1548380319:253500 -1548555267:255000 -1548741069:256500 -1548926544:258000 -1549140801:259500 -1549297081:261000 -1549478379:262500 -1549651888:264000 -1549860339:265500 -1550024455:267000 -1550217332:268500 -1551312389:270000 -1551527936:271500 -1551665288:273000 -1551836443:274500 -1552026339:276000 -1552218441:277500 -1552443760:279000 -1552680291:280500 -1552854334:282000 -1553030527:283500 -1553211359:285000 -1553385763:286500 -1553588198:288000 -1553760642:289500 -1553937158:291000 -1554121990:292500 -1554302691:294000 -1554479953:295500 -1554666762:297000 -1554850956:298500 -1555057081:300000 -1555228611:301500 -1555400592:303000 -1555615005:304500 -1555789135:306000 -1555995570:307500 -1556183867:309000 -1556362195:310500 -1556541232:312000 -1556728140:313500 -1556903453:315000 -1557065264:316500 -1557273415:318000 -1557443047:319500 -1557618850:321000 -1557798876:322500 -1557976530:324000 -1558172356:325500 -1558356032:327000 -1558534222:328500 -1558719934:330000 -1558892036:331500 -1559075695:333000 -1559253052:334500 -1559462339:336000 -1559647394:337500 -1559827424:339000 -1560002042:340500 -1560189126:342000 -1560343483:343500 -1560548477:345000 -1560709613:346500 -1560888640:348000 -1561072261:349500 -1561249189:351000 -1561433494:352500 -1561609875:354000 -1561789136:355500 -1561971530:357000 -1562146235:358500 -1562283612:360000 -1562536678:361500 -1562727970:363000 -1562896064:364500 -1563081360:366000 -1563222147:367500 -1563471753:369000 -1563648133:370500 -1563844968:372000 -1564019071:373500 -1564194349:375000 -1564378444:376500 -1564557884:378000 -1564733144:379500 -1564931656:381000 -1565088150:382500 -1565272766:384000 -1565457895:385500 -1565632566:387000 -1565824568:388500 -1565992971:390000 -1566155025:391500 -1566345274:393000 -1566534162:394500 -1566736618:396000 -1566937517:397500 -1567128136:399000 -1567296600:400500 -1567482630:402000 -1567671945:403500 -1567828904:405000 -1568061755:406500 -1568241437:408000 -1568413206:409500 -1568589427:411000 -1568777072:412500 -1568950797:414000 -1569140033:415500 -1569321139:417000 -1569497726:418500 -1569685524:420000 -1569858754:421500 -1570025222:423000 -1570195891:424500 -1570412169:426000 -1570568122:427500 -1570772965:429000 -1570968490:430500 -1571107236:432000 -1571359933:433500 -1571520970:435000 -1571737619:436500 -1571890574:438000 -1572104152:439500 -1572299391:441000 -1572483040:442500 -1572663772:444000 -1572839626:445500 -1573049256:447000 -1573229282:448500 -1573407580:450000 -1573589178:451500 -1573735333:453000 -1573840717:454500 -1574096272:456000 -1574280161:457500 -1574455892:459000 -1574604632:460500 -1574809987:462000 -1574975801:463500 -1575140569:465000 -1575422392:466500 -1575583824:468000 -1575763253:469500 -1575944350:471000 -1576125074:472500 -1576324269:474000 -1576508865:475500 -1576669612:477000 -1576891906:478500 -1577078563:480000 -1577265105:481500 -1577431370:483000 -1577744409:484500 -1577874268:486000 -1578038130:487500 -1578231375:489000 -1578439644:490500 -1578625982:492000 -1578808598:493500 -1578985283:495000 -1579175621:496500 -1579347774:498000 -1579517894:499500 -1579687667:501000 -1579868646:502500 -1580046838:504000 -1580240961:505500 -1580428207:507000 -1580572904:508500 -1580823996:510000 -1580994064:511500 -1581183924:513000 -1581351893:514500 -1581521085:516000 -1581702405:517500 -1581943619:519000 -1582098842:520500 -1582299537:522000 -1582480013:523500 -1582659742:525000 -1582839127:526500 -1583020057:528000 -1583266489:529500 -1583429819:531000 -1583615548:532500 -1583785190:534000 -1584011766:535500 -1584192961:537000 -1584342104:538500 -1584521327:540000 -1584706894:541500 -1584883565:543000 -1585062315:544500 -1585244138:546000 -1585427591:547500 -1585600165:549000 -1585784601:550500 -1585961031:552000 -1586147565:553500 -1586322716:555000 -1586513730:556500 -1586698639:558000 -1586878453:559500 -1587062131:561000 -1587234968:562500 -1587391529:564000 -1587591247:565500 -1587752262:567000 -1587969335:568500 -1588148503:570000 -1588405392:571500 -1588593609:573000 -1588778703:574500 -1588949467:576000 -1589172941:577500 -1589358899:579000 -1589536247:580500 -1589730950:582000 -1589882572:583500 -1590062931:585000 -1590237283:586500 -1590430792:588000 -1590599140:589500 -1590807968:591000 -1590987339:592500 -1591166304:594000 -1591348974:595500 -1591542069:597000 -1591723208:598500 -1591908870:600000 -1592060567:601500 -1592259549:603000 -1592465269:604500 -1592647205:606000 -1592828242:607500 -1593006687:609000 -1593201658:610500 -1593492855:612000 -1593636856:613500 -1593811224:615000 -1594004429:616500 -1594162422:618000 -1594348191:619500 -1594523256:621000 -1594685351:622500 -1594890677:624000 -1595073577:625500 -1595269373:627000 -1595477524:628500 -1595668392:630000 -1595867552:631500 -1596043173:633000 -1596209876:634500 -1596419711:636000 -1596600935:637500 -1596770710:639000 -1596979435:640500 -1597172685:642000 -1597347250:643500 -1597508807:645000 -1597698614:646500 -1597871525:648000 -1598058524:649500 -1598368966:651000 -1598552832:652500 -1598715002:654000 -1598902853:655500 -1599078705:657000 -1599253008:658500 -1599430407:660000 -1599636188:661500 -1599809533:663000 -1600001474:664500 diff --git a/src/assets/restore_heights_wownero_mainnet.txt b/src/assets/restore_heights_wownero_mainnet.txt new file mode 100644 index 0000000..c74c02e --- /dev/null +++ b/src/assets/restore_heights_wownero_mainnet.txt @@ -0,0 +1,170 @@ +1522624244:1 +1522919763:1500 +1523409727:3000 +1523960364:4500 +1524369547:6000 +1524784400:7500 +1525233663:9000 +1525687037:10500 +1526135584:12000 +1526578718:13500 +1527063859:15000 +1527518523:16500 +1527977555:18000 +1528436212:19500 +1528893646:21000 +1529347707:22500 +1529812899:24000 +1530272289:25500 +1530735091:27000 +1531195321:28500 +1531660804:30000 +1532117133:31500 +1532568099:33000 +1533015693:34500 +1533470854:36000 +1533923432:37500 +1534374443:39000 +1534823621:40500 +1535290349:42000 +1535735446:43500 +1536201310:45000 +1536655339:46500 +1537109771:48000 +1537565159:49500 +1538015344:51000 +1538470517:52500 +1538927269:54000 +1539379855:55500 +1539826869:57000 +1540311781:58500 +1540788117:60000 +1541297876:61500 +1541794302:63000 +1542407858:64500 +1543204218:66000 +1543955252:67500 +1544703247:69000 +1545372024:70500 +1546002226:72000 +1546636335:73500 +1547342810:75000 +1548268561:76500 +1548921502:78000 +1549481994:79500 +1550247894:81000 +1550743647:82500 +1551184199:84000 +1551626083:85500 +1552086272:87000 +1552546202:88500 +1552994646:90000 +1553451645:91500 +1553898976:93000 +1554352300:94500 +1554801655:96000 +1555254551:97500 +1555700170:99000 +1556151520:100500 +1556602014:102000 +1557057709:103500 +1557508808:105000 +1557961787:106500 +1558413175:108000 +1558860703:109500 +1559310651:111000 +1559759587:112500 +1560207825:114000 +1560635185:115500 +1561076902:117000 +1561514633:118500 +1561983210:120000 +1562435722:121500 +1562903313:123000 +1563367656:124500 +1563794760:126000 +1564249987:127500 +1564698967:129000 +1565154467:130500 +1565606876:132000 +1566053072:133500 +1566496455:135000 +1566940483:136500 +1567391114:138000 +1567840593:139500 +1568290979:141000 +1568739494:142500 +1569196321:144000 +1569643702:145500 +1570095074:147000 +1570533207:148500 +1570991907:150000 +1571447301:151500 +1571895478:153000 +1572343106:154500 +1572791579:156000 +1573241814:157500 +1573692641:159000 +1574137867:160500 +1574600312:162000 +1575051207:163500 +1575500955:165000 +1575953057:166500 +1576401859:168000 +1576850419:169500 +1577301553:171000 +1577753392:172500 +1578199780:174000 +1578655276:175500 +1579104342:177000 +1579549362:178500 +1580004525:180000 +1580451365:181500 +1580900062:183000 +1581350016:184500 +1581795609:186000 +1582251322:187500 +1582703447:189000 +1583152160:190500 +1583601824:192000 +1584051198:193500 +1584499159:195000 +1584949547:196500 +1585404000:198000 +1585843662:199500 +1586292852:201000 +1586738236:202500 +1587201986:204000 +1587663936:205500 +1588119101:207000 +1588586510:208500 +1589057972:210000 +1589520509:211500 +1589974638:213000 +1590425544:214500 +1590876865:216000 +1591326399:217500 +1591759684:219000 +1592226165:220500 +1592681388:222000 +1593141896:223500 +1593595859:225000 +1594048319:226500 +1594489197:228000 +1594955184:229500 +1595408732:231000 +1595854685:232500 +1596303095:234000 +1596732814:235500 +1597198383:237000 +1597650820:238500 +1598099448:240000 +1598553007:241500 +1599004645:243000 +1599459515:244500 +1599914532:246000 +1600357718:247500 +1600811447:249000 +1601257433:250500 +1601710572:252000 +1602154921:253500 \ No newline at end of file diff --git a/src/calcwidget.cpp b/src/calcwidget.cpp index 89ab230..a86c04c 100644 --- a/src/calcwidget.cpp +++ b/src/calcwidget.cpp @@ -123,7 +123,7 @@ void CalcWidget::initComboBox() { ui->comboCalcFrom->addItems(marketsKeys); ui->comboCalcFrom->insertSeparator(marketsKeys.count()); ui->comboCalcFrom->addItems(ratesKeys); - ui->comboCalcFrom->setCurrentIndex(marketsKeys.indexOf("XMR")); + ui->comboCalcFrom->setCurrentIndex(marketsKeys.indexOf("WOW")); ui->comboCalcTo->addItems(marketsKeys); ui->comboCalcTo->insertSeparator(marketsKeys.count()); diff --git a/src/dialog/aboutdialog.cpp b/src/dialog/aboutdialog.cpp index 5563425..f5d3942 100644 --- a/src/dialog/aboutdialog.cpp +++ b/src/dialog/aboutdialog.cpp @@ -12,8 +12,8 @@ AboutDialog::AboutDialog(QWidget *parent) { ui->setupUi(this); this->setWindowIcon(QIcon("://assets/images/appicons/64x64.png")); - // cute fox (c) Diego "rehrar" Salazar :-D - QPixmap p(":assets/images/cutexmrfox.png"); + + QPixmap p(":assets/images/photos/illiterate_illuminati.png"); ui->aboutImage->setPixmap(p.scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)); auto about = Utils::fileOpenQRC(":assets/about.txt"); auto about_text = Utils::barrayToString(about); diff --git a/src/dialog/aboutdialog.ui b/src/dialog/aboutdialog.ui index 84f2a76..0cf2e41 100644 --- a/src/dialog/aboutdialog.ui +++ b/src/dialog/aboutdialog.ui @@ -43,7 +43,7 @@ - a free, open-source Monero wallet + a free, open-source Wownero wallet Qt::AlignCenter diff --git a/src/dialog/debuginfodialog.cpp b/src/dialog/debuginfodialog.cpp index d3b00a7..e6aa187 100644 --- a/src/dialog/debuginfodialog.cpp +++ b/src/dialog/debuginfodialog.cpp @@ -12,26 +12,15 @@ DebugInfoDialog::DebugInfoDialog(AppContext *ctx, QWidget *parent) : QDialog(parent) , ui(new Ui::DebugInfoDialog) - , m_ctx(ctx) { ui->setupUi(this); - connect(ui->btn_Copy, &QPushButton::clicked, this, &DebugInfoDialog::copyToClipboad); - - m_updateTimer.start(5000); - connect(&m_updateTimer, &QTimer::timeout, this, &DebugInfoDialog::updateInfo); - this->updateInfo(); - - this->adjustSize(); -} - -void DebugInfoDialog::updateInfo() { QString torStatus; - if(m_ctx->isTorSocks) + if(ctx->isTorSocks) torStatus = "Torsocks"; - else if(m_ctx->tor->localTor) + else if(ctx->tor->localTor) torStatus = "Local (assumed to be running)"; - else if(m_ctx->tor->torConnected) + else if(ctx->tor->torConnected) torStatus = "Running"; else torStatus = "Unknown"; @@ -39,28 +28,31 @@ void DebugInfoDialog::updateInfo() { ui->label_featherVersion->setText(QString("%1-%2").arg(FEATHER_VERSION, FEATHER_BRANCH)); ui->label_moneroVersion->setText(QString("%1-%2").arg(MONERO_VERSION, MONERO_BRANCH)); - ui->label_walletHeight->setText(QString::number(m_ctx->currentWallet->blockChainHeight())); - ui->label_daemonHeight->setText(QString::number(m_ctx->currentWallet->daemonBlockChainHeight())); - ui->label_targetHeight->setText(QString::number(m_ctx->currentWallet->daemonBlockChainTargetHeight())); - ui->label_restoreHeight->setText(QString::number(m_ctx->currentWallet->getWalletCreationHeight())); - ui->label_synchronized->setText(m_ctx->currentWallet->synchronized() ? "True" : "False"); + ui->label_walletHeight->setText(QString::number(ctx->currentWallet->blockChainHeight())); + ui->label_daemonHeight->setText(QString::number(ctx->currentWallet->daemonBlockChainHeight())); + ui->label_restoreHeight->setText(QString::number(ctx->currentWallet->getWalletCreationHeight())); + ui->label_synchronized->setText(ctx->currentWallet->synchronized() ? "True" : "False"); - auto node = m_ctx->nodes->connection(); + auto node = ctx->nodes->connection(); ui->label_remoteNode->setText(node.full); - ui->label_walletStatus->setText(this->statusToString(m_ctx->currentWallet->connectionStatus())); + ui->label_walletStatus->setText(this->statusToString(ctx->currentWallet->connected())); ui->label_torStatus->setText(torStatus); - ui->label_websocketStatus->setText(Utils::QtEnumToString(m_ctx->ws->webSocket.state())); + ui->label_websocketStatus->setText(Utils::QtEnumToString(ctx->ws->webSocket.state())); - ui->label_netType->setText(Utils::QtEnumToString(m_ctx->currentWallet->nettype())); - ui->label_seedType->setText(m_ctx->currentWallet->getCacheAttribute("feather.seed").isEmpty() ? "25 word" : "14 word"); - ui->label_viewOnly->setText(m_ctx->currentWallet->viewOnly() ? "True" : "False"); + ui->label_netType->setText(Utils::QtEnumToString(ctx->currentWallet->nettype())); + ui->label_seedType->setText(ctx->currentWallet->getCacheAttribute("feather.seed").isEmpty() ? "25 word" : "14 word"); + ui->label_viewOnly->setText(ctx->currentWallet->viewOnly() ? "True" : "False"); QString os = QSysInfo::prettyProductName(); - if (m_ctx->isTails) { + if (ctx->isTails) { os = QString("Tails %1").arg(TailsOS::version()); } ui->label_OS->setText(os); ui->label_timestamp->setText(QString::number(QDateTime::currentSecsSinceEpoch())); + + connect(ui->btn_Copy, &QPushButton::clicked, this, &DebugInfoDialog::copyToClipboad); + + this->adjustSize(); } QString DebugInfoDialog::statusToString(Wallet::ConnectionStatus status) { @@ -79,28 +71,26 @@ QString DebugInfoDialog::statusToString(Wallet::ConnectionStatus status) { } void DebugInfoDialog::copyToClipboad() { - // Two spaces at the end of each line are for newlines in Markdown QString text = ""; - text += QString("Feather version: %1 \n").arg(ui->label_featherVersion->text()); - text += QString("Monero version: %1 \n").arg(ui->label_moneroVersion->text()); - - text += QString("Wallet height: %1 \n").arg(ui->label_walletHeight->text()); - text += QString("Daemon height: %1 \n").arg(ui->label_daemonHeight->text()); - text += QString("Target height: %1 \n").arg(ui->label_targetHeight->text()); - text += QString("Restore height: %1 \n").arg(ui->label_restoreHeight->text()); - text += QString("Synchronized: %1 \n").arg(ui->label_synchronized->text()); - - text += QString("Remote node: %1 \n").arg(ui->label_remoteNode->text()); - text += QString("Wallet status: %1 \n").arg(ui->label_walletStatus->text()); - text += QString("Tor status: %1 \n").arg(ui->label_torStatus->text()); - text += QString("Websocket status: %1 \n").arg(ui->label_websocketStatus->text()); - - text += QString("Network type: %1 \n").arg(ui->label_netType->text()); - text += QString("Seed type: %1 \n").arg(ui->label_seedType->text()); - text += QString("View only: %1 \n").arg(ui->label_viewOnly->text()); - - text += QString("Operating system: %1 \n").arg(ui->label_OS->text()); - text += QString("Timestamp: %1 \n").arg(ui->label_timestamp->text()); + text += QString("Feather version: %1\n").arg(ui->label_featherVersion->text()); + text += QString("Wownero version: %1\n").arg(ui->label_moneroVersion->text()); + + text += QString("Wallet height: %1\n").arg(ui->label_walletHeight->text()); + text += QString("Daemon height: %1\n").arg(ui->label_daemonHeight->text()); + text += QString("Restore height: %1\n").arg(ui->label_restoreHeight->text()); + text += QString("Synchronized: %1\n").arg(ui->label_synchronized->text()); + + text += QString("Remote node: %1\n").arg(ui->label_remoteNode->text()); + text += QString("Wallet status: %1\n").arg(ui->label_walletStatus->text()); + text += QString("Tor status: %1\n").arg(ui->label_torStatus->text()); + text += QString("Websocket status: %1\n").arg(ui->label_websocketStatus->text()); + + text += QString("Network type: %1\n").arg(ui->label_netType->text()); + text += QString("Seed type: %1\n").arg(ui->label_seedType->text()); + text += QString("View only: %1\n").arg(ui->label_viewOnly->text()); + + text += QString("Operating system: %1\n").arg(ui->label_OS->text()); + text += QString("Timestamp: %1\n").arg(ui->label_timestamp->text()); Utils::copyToClipboard(text); } diff --git a/src/dialog/debuginfodialog.ui b/src/dialog/debuginfodialog.ui index ecace2c..822a8b4 100644 --- a/src/dialog/debuginfodialog.ui +++ b/src/dialog/debuginfodialog.ui @@ -36,7 +36,7 @@ - Monero version: + Wownero version: diff --git a/src/dialog/outputinfodialog.cpp b/src/dialog/outputinfodialog.cpp index 800b1c8..99b8c42 100644 --- a/src/dialog/outputinfodialog.cpp +++ b/src/dialog/outputinfodialog.cpp @@ -28,7 +28,7 @@ OutputInfoDialog::OutputInfoDialog(CoinsInfo *cInfo, QWidget *parent) QString status = cInfo->spent() ? "spent" : (cInfo->frozen() ? "frozen" : "unspent"); ui->label_status->setText(status); - ui->label_amount->setText(QString("%1 XMR").arg(cInfo->displayAmount())); + ui->label_amount->setText(QString("%1 WOW").arg(cInfo->displayAmount())); ui->label_creationHeight->setText(QString::number(cInfo->blockHeight())); ui->label_globalIndex->setText(QString::number(cInfo->globalOutputIndex())); ui->label_internalIndex->setText(QString::number(cInfo->internalOutputIndex())); diff --git a/src/dialog/txconfdialog.cpp b/src/dialog/txconfdialog.cpp index 7bb9a11..e946af4 100644 --- a/src/dialog/txconfdialog.cpp +++ b/src/dialog/txconfdialog.cpp @@ -28,7 +28,7 @@ TxConfDialog::TxConfDialog(AppContext *ctx, PendingTransaction *tx, const QStrin QString preferredCur = config()->get(Config::preferredFiatCurrency).toString(); auto convert = [preferredCur](double amount){ - return QString::number(AppContext::prices->convert("XMR", preferredCur, amount), 'f', 2); + return QString::number(AppContext::prices->convert("WOW", preferredCur, amount), 'f', 2); }; QString amount = WalletManager::displayAmount(tx->amount()); diff --git a/src/dialog/verifyproofdialog.cpp b/src/dialog/verifyproofdialog.cpp index 4d34f4e..c1a578c 100644 --- a/src/dialog/verifyproofdialog.cpp +++ b/src/dialog/verifyproofdialog.cpp @@ -94,6 +94,6 @@ void VerifyProofDialog::checkTxProof(const QString &txId, const QString &address return; } - QString msg = QString("This address received %1 monero, with %2 confirmation(s)").arg(WalletManager::displayAmount(r.received), QString::number(r.confirmations)); + QString msg = QString("This address received %1 wownero, with %2 confirmation(s)").arg(WalletManager::displayAmount(r.received), QString::number(r.confirmations)); QMessageBox::information(this, "Information", QString("Proof is valid.\n\n%1").arg(msg)); } \ No newline at end of file diff --git a/src/libwalletqt/TransactionInfo.cpp b/src/libwalletqt/TransactionInfo.cpp index 19e7fd1..bf7a08d 100644 --- a/src/libwalletqt/TransactionInfo.cpp +++ b/src/libwalletqt/TransactionInfo.cpp @@ -93,7 +93,7 @@ quint64 TransactionInfo::confirmations() const quint64 TransactionInfo::confirmationsRequired() const { - return (m_blockHeight < m_unlockTime) ? m_unlockTime - m_blockHeight : 10; + return (m_blockHeight < m_unlockTime) ? m_unlockTime - m_blockHeight : 4; } quint64 TransactionInfo::unlockTime() const diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 9e1abc6..1a5c3d6 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -452,20 +452,28 @@ quint64 Wallet::daemonBlockChainTargetHeight() const bool Wallet::exportKeyImages(const QString& path, bool all) { - return m_walletImpl->exportKeyImages(path.toStdString(), all); + // @TODO: remove after WOW 0.9.0.2 tagged + feather libwallet patch + //return m_walletImpl->exportKeyImages(path.toStdString(), all); + return false; } bool Wallet::importKeyImages(const QString& path) { - return m_walletImpl->importKeyImages(path.toStdString()); + // @TODO: remove after WOW 0.9.0.2 tagged + feather libwallet patch + //return m_walletImpl->importKeyImages(path.toStdString()); + return false; } bool Wallet::exportOutputs(const QString& path, bool all) { - return m_walletImpl->exportOutputs(path.toStdString(), all); + // @TODO: remove after WOW 0.9.0.2 tagged + feather libwallet patch + //return m_walletImpl->exportOutputs(path.toStdString(), all); + return false; } bool Wallet::importOutputs(const QString& path) { - return m_walletImpl->importOutputs(path.toStdString()); + // @TODO: remove after WOW 0.9.0.2 tagged + feather libwallet patch + // return m_walletImpl->importOutputs(path.toStdString()); + return false; } bool Wallet::importTransaction(const QString& txid, const QVector& output_indeces, quint64 height, quint64 timestamp, bool miner_tx, bool pool, bool double_spend_seen) { diff --git a/src/main.cpp b/src/main.cpp index 5482d44..e6b1947 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,7 +38,7 @@ int main(int argc, char *argv[]) } QCommandLineParser parser; - parser.setApplicationDescription("feather"); + parser.setApplicationDescription("feather-wow"); parser.addHelpOption(); parser.addVersionOption(); @@ -54,11 +54,11 @@ int main(int argc, char *argv[]) QCommandLineOption quietModeOption(QStringList() << "quiet", "Limit console output"); parser.addOption(quietModeOption); - QCommandLineOption stagenetOption(QStringList() << "stagenet", "Stagenet is for development purposes only."); - parser.addOption(stagenetOption); - - QCommandLineOption testnetOption(QStringList() << "testnet", "Testnet is for development purposes only."); - parser.addOption(testnetOption); +// QCommandLineOption stagenetOption(QStringList() << "stagenet", "Stagenet is for development purposes only."); +// parser.addOption(stagenetOption); +// +// QCommandLineOption testnetOption(QStringList() << "testnet", "Testnet is for development purposes only."); +// parser.addOption(testnetOption); QCommandLineOption walletPathOption(QStringList() << "wallet-file", "Path to wallet keys file.", "file"); parser.addOption(walletPathOption); @@ -84,8 +84,8 @@ int main(int argc, char *argv[]) const QStringList args = parser.positionalArguments(); bool debugMode = parser.isSet(debugModeOption); bool localTor = parser.isSet(useLocalTorOption); - bool stagenet = parser.isSet(stagenetOption); - bool testnet = parser.isSet(testnetOption); + bool stagenet = false; + bool testnet = false; bool quiet = parser.isSet(quietModeOption); bool exportContacts = parser.isSet(exportContactsOption); bool exportTxHistory = parser.isSet(exportTxHistoryOption); @@ -93,7 +93,7 @@ int main(int argc, char *argv[]) if(cliMode) { QCoreApplication cli_app(argc, argv); - QCoreApplication::setApplicationName("feather"); + QCoreApplication::setApplicationName("feather-wow"); QCoreApplication::setOrganizationDomain("featherwallet.org"); QCoreApplication::setOrganizationName("featherwallet.org"); @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); - QApplication::setApplicationName("feather"); + QApplication::setApplicationName("feather-wow"); QApplication::setOrganizationDomain("featherwallet.org"); QApplication::setOrganizationName("featherwallet.org"); @@ -135,7 +135,7 @@ int main(int argc, char *argv[]) if(!quiet) { QMap info; info["Qt"] = QT_VERSION_STR; - info["Feather"] = FEATHER_VERSION; + info["Feather-WOW"] = FEATHER_VERSION; if (stagenet) info["Mode"] = "Stagenet"; else if (testnet) info["Mode"] = "Testnet"; else info["Mode"] = "Mainnet"; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index be17536..4e48157 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -19,8 +19,6 @@ #include "dialog/torinfodialog.h" #include "dialog/viewonlydialog.h" #include "dialog/broadcasttxdialog.h" -#include "dialog/tximportdialog.h" -#include "dialog/passworddialog.h" #include "utils/utils.h" #include "utils/config.h" #include "utils/daemonrpc.h" @@ -97,7 +95,7 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : connect(ui->actionReport_bug, &QAction::triggered, [this](){ QMessageBox::information(this, "Reporting Bugs", "Please report any bugs as issues on our git repo:
\n" - "https://git.wownero.com/feather/feather/issues

" + "https://git.wownero.com/feather/feather-wow/issues

" "\n" "Before reporting a bug, upgrade to the most recent version of Feather " "(latest release or git HEAD), and include the version number in your report. " @@ -105,6 +103,8 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : }); connect(ui->actionShow_debug_info, &QAction::triggered, this, &MainWindow::showDebugInfo); connect(ui->actionOfficialWebsite, &QAction::triggered, [=] { Utils::externalLinkWarning("https://featherwallet.org"); }); + connect(ui->actionAbout_Qt, &QAction::triggered, [=] { QApplication::aboutQt(); }); + #if defined(XMRTO) // xmr.to connects/widget @@ -118,12 +118,9 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : connect(m_ctx->XMRTo, &XmrTo::openURL, this, [=](const QString &url){ Utils::externalLinkWarning(url); }); ui->xmrToWidget->setHistoryModel(m_ctx->XMRTo->tableModel); #else - ui->tabWidget->setTabVisible(Tabs::XMR_TO, false); + ui->tabWidget->setTabVisible(5, false); #endif -#ifndef HAS_MORPHTOKEN - ui->tabWidget->setTabVisible(Tabs::MORPHTOKEN, false); -#endif #if defined(Q_OS_LINUX) // system tray @@ -134,7 +131,7 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : m_trayActionCalc->setStatusTip("Calculator"); m_trayActionSend = new QAction("Send", this); - m_trayActionSend->setStatusTip("Send XMR payment"); + m_trayActionSend->setStatusTip("Send WOW payment"); m_trayActionHistory = new QAction("History", this); m_trayActionHistory->setStatusTip("View incoming transfers"); @@ -156,13 +153,13 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : #endif // ticker widgets - m_tickerWidgets.append(new TickerWidget(this, "XMR")); + m_tickerWidgets.append(new TickerWidget(this, "WOW")); m_tickerWidgets.append(new TickerWidget(this, "BTC")); for(auto tickerWidget: m_tickerWidgets) { ui->tickerLayout->addWidget(tickerWidget); } - m_balanceWidget = new TickerWidget(this, "XMR", "Balance", true); + m_balanceWidget = new TickerWidget(this, "WOW", "Balance", true); ui->fiatTickerLayout->addWidget(m_balanceWidget); // Send widget @@ -186,8 +183,6 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : connect(m_xmrig, &XMRigWidget::miningStarted, [=]{ m_ctx->setWindowTitle(true); }); connect(m_xmrig, &XMRigWidget::miningEnded, [=]{ m_ctx->setWindowTitle(false); }); -#else - ui->tabWidget->setTabVisible(Tabs::XMRIG, false); #endif // CCS/Reddit widget @@ -200,13 +195,6 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : ui->coolLayout->addWidget(m_ccsWidget); ui->coolLayout->addWidget(m_redditWidget); - connect(m_ctx, &AppContext::ccsEmpty, [=] { - if(m_ccsWidget->isVisible()) { - // display Reddit widget instead - m_ccsWidget->show(); - m_redditWidget->show(); - } - }); connect(m_ctx, &AppContext::ccsUpdated, m_ccsWidget->model(), &CCSModel::updateEntries); connect(m_ctx, &AppContext::redditUpdated, m_redditWidget->model(), &RedditModel::updatePosts); connect(m_ccsWidget, &CCSWidget::selected, this, &MainWindow::showSendScreen); @@ -301,13 +289,13 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : }); connect(ui->receiveWidget, &ReceiveWidget::showTransactions, [this](const QString &text) { ui->historyWidget->setSearchText(text); - ui->tabWidget->setCurrentIndex(Tabs::HISTORY); + ui->tabWidget->setCurrentIndex(1); //history }); // History connect(ui->historyWidget, &HistoryWidget::spendProof, [&](const QString &txid){ - TxProof txproof = m_ctx->currentWallet->getSpendProof(txid, ""); - Utils::copyToClipboard(txproof.proof); + QString spendProof = m_ctx->currentWallet->getSpendProof(txid, ""); + Utils::copyToClipboard(spendProof); }); connect(ui->historyWidget, &HistoryWidget::viewOnBlockExplorer, this, &MainWindow::onViewOnBlockExplorer); @@ -349,26 +337,16 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) : connect(ui->coinsWidget, &CoinsWidget::sweepOutput, m_ctx, &AppContext::onSweepOutput); connect(m_ctx, &AppContext::walletClosing, [=]{ - ui->tabWidget->setCurrentIndex(Tabs::HOME); + ui->tabWidget->setCurrentIndex(0); }); // window title connect(m_ctx, &AppContext::setTitle, this, &QMainWindow::setWindowTitle); - // init touchbar -#ifdef Q_OS_MAC - m_touchbar = new KDMacTouchBar(this); - m_touchbarActionWelcome = new QAction(QIcon(":/assets/images/feather.png"), "Welcome to Feather!"); - m_touchbarWalletItems = {ui->actionSettings, ui->actionCalculator, ui->actionKeys, ui->actionDonate_to_Feather}; - m_touchbarWizardItems = {m_touchbarActionWelcome}; -#endif - // setup some UI this->initMain(); this->initWidgets(); this->initMenu(); - - connect(&m_updateBytes, &QTimer::timeout, this, &MainWindow::updateNetStats); } void MainWindow::initMain() { @@ -396,39 +374,18 @@ void MainWindow::initMain() { this->show(); m_wizard = this->createWizard(WalletWizard::Page_Menu); m_wizard->show(); - this->touchbarShowWizard(); } void MainWindow::initMenu() { - // setup shortcuts - ui->actionStore_wallet->setShortcut(QKeySequence("Ctrl+S")); - ui->actionRefresh_tabs->setShortcut(QKeySequence("Ctrl+R")); - ui->actionClose->setShortcut(QKeySequence("Ctrl+W")); - ui->actionShow_debug_info->setShortcut(QKeySequence("Ctrl+D")); - ui->actionSettings->setShortcut(QKeySequence("Ctrl+Alt+S")); - // hide/show tabs m_tabShowHideSignalMapper = new QSignalMapper(this); connect(ui->actionShow_Coins, &QAction::triggered, m_tabShowHideSignalMapper, QOverload<>::of(&QSignalMapper::map)); m_tabShowHideMapper["Coins"] = new ToggleTab(ui->tabCoins, "Coins", "Coins", ui->actionShow_Coins, Config::showTabCoins); m_tabShowHideSignalMapper->setMapping(ui->actionShow_Coins, "Coins"); - - connect(ui->actionShow_calc, &QAction::triggered, m_tabShowHideSignalMapper, QOverload<>::of(&QSignalMapper::map)); - m_tabShowHideMapper["Calc"] = new ToggleTab(ui->tabCalc, "Calc", "Calc", ui->actionShow_calc, Config::showTabCalc); - m_tabShowHideSignalMapper->setMapping(ui->actionShow_calc, "Calc"); - -#if defined(HAS_MORPHTOKEN) - connect(ui->actionShow_MorphToken, &QAction::triggered, m_tabShowHideSignalMapper, QOverload<>::of(&QSignalMapper::map)); - m_tabShowHideMapper["MorphToken"] = new ToggleTab(ui->tabMorphToken, "MorphToken", "MorphToken", ui->actionShow_MorphToken, Config::showTabMorphToken); - m_tabShowHideSignalMapper->setMapping(ui->actionShow_MorphToken, "MorphToken"); -#else - ui->actionShow_MorphToken->setVisible(false); -#endif - #if defined(XMRTO) connect(ui->actionShow_xmr_to, &QAction::triggered, m_tabShowHideSignalMapper, QOverload<>::of(&QSignalMapper::map)); - m_tabShowHideMapper["XMRto"] = new ToggleTab(ui->tabXmrTo, "XMRto", "XMR.to", ui->actionShow_xmr_to, Config::showTabXMRto); + m_tabShowHideMapper["XMRto"] = new ToggleTab(ui->tabXmrTo, "XMRto", "xmr.to", ui->actionShow_xmr_to, Config::showTabXMRto); m_tabShowHideSignalMapper->setMapping(ui->actionShow_xmr_to, "XMRto"); #else ui->actionShow_xmr_to->setVisible(false); @@ -441,6 +398,9 @@ void MainWindow::initMenu() { #else ui->actionShow_XMRig->setVisible(false); #endif + connect(ui->actionShow_calc, &QAction::triggered, m_tabShowHideSignalMapper, QOverload<>::of(&QSignalMapper::map)); + m_tabShowHideMapper["Calc"] = new ToggleTab(ui->tabCalc, "Calc", "Calc", ui->actionShow_calc, Config::showTabCalc); + m_tabShowHideSignalMapper->setMapping(ui->actionShow_calc, "Calc"); for (const auto &key: m_tabShowHideMapper.keys()) { const auto toggleTab = m_tabShowHideMapper.value(key); @@ -502,13 +462,11 @@ void MainWindow::initMenu() { if(targetDir.isEmpty()) return; qint64 now = QDateTime::currentDateTime().currentMSecsSinceEpoch(); - QString fn = QString("%1/monero-contacts_%2.csv").arg(targetDir, QString::number(now / 1000)); + QString fn = QString("%1/wownero-contacts_%2.csv").arg(targetDir, QString::number(now / 1000)); if(model->writeCSV(fn)) Utils::showMessageBox("Address book exported", QString("Address book exported to %1").arg(fn), false); }); - connect(ui->actionImportContactsCSV, &QAction::triggered, this, &MainWindow::importContacts); - // Tools connect(ui->actionSignVerify, &QAction::triggered, this, &MainWindow::menuSignVerifyClicked); connect(ui->actionVerifyTxProof, &QAction::triggered, this, &MainWindow::menuVerifyTxProof); @@ -516,7 +474,6 @@ void MainWindow::initMenu() { connect(ui->actionLoadUnsignedTxFromClipboard, &QAction::triggered, this, &MainWindow::loadUnsignedTxFromClipboard); connect(ui->actionLoadSignedTxFromFile, &QAction::triggered, this, &MainWindow::loadSignedTx); connect(ui->actionLoadSignedTxFromText, &QAction::triggered, this, &MainWindow::loadSignedTxFromText); - connect(ui->actionImport_transaction, &QAction::triggered, this, &MainWindow::importTransaction); // About screen connect(ui->actionAbout, &QAction::triggered, this, &MainWindow::menuAboutClicked); @@ -576,41 +533,24 @@ void MainWindow::onWalletClosed(WalletWizard::Page page) { this->showWizard(page); } -void MainWindow::touchbarShowWizard() { -#ifdef Q_OS_MAC - m_touchbar->clear(); - for(auto* action: m_touchbarWizardItems) m_touchbar->addAction(action); -#endif -} - -void MainWindow::touchbarShowWallet() { -#ifdef Q_OS_MAC - m_touchbar->clear(); - for(auto* action: m_touchbarWalletItems) m_touchbar->addAction(action); -#endif -} - void MainWindow::onWalletCreatedError(const QString &err) { Utils::showMessageBox("Wallet creation error", err, true); this->showWizard(WalletWizard::Page_CreateWallet); } -void MainWindow::onWalletOpenPasswordRequired(bool invalidPassword, const QString &path) { - QFileInfo fileInfo(path); +void MainWindow::onWalletOpenPasswordRequired(bool invalidPassword) { + QInputDialog passwordDialog(this); + passwordDialog.setInputMode(QInputDialog::TextInput); + passwordDialog.setTextEchoMode(QLineEdit::Password); + passwordDialog.setWindowTitle("Password required"); + passwordDialog.setLabelText("Please enter wallet password."); + passwordDialog.resize(300, 100); + if(!(bool)passwordDialog.exec()) + return this->showWizard(WalletWizard::Page_OpenWallet); - auto dialog = new PasswordDialog(this, fileInfo.fileName(), invalidPassword); - switch (dialog->exec()) { - case QDialog::Rejected: - { - this->showWizard(WalletWizard::Page_OpenWallet); - return; - } - } - - m_ctx->walletPassword = dialog->password; + const auto passwd = passwordDialog.textValue(); + m_ctx->walletPassword = passwd; m_ctx->onOpenWallet(m_ctx->walletPath, m_ctx->walletPassword); - - dialog->deleteLater(); } void MainWindow::onWalletOpenedError(const QString &err) { @@ -618,7 +558,6 @@ void MainWindow::onWalletOpenedError(const QString &err) { QMessageBox::warning(this, "Wallet open error", err); this->setWindowTitle("Feather"); this->showWizard(WalletWizard::Page_OpenWallet); - this->touchbarShowWizard(); } void MainWindow::onWalletCreated(Wallet *wallet) { @@ -658,7 +597,7 @@ void MainWindow::onWalletOpened() { // history page m_ctx->currentWallet->history()->refresh(m_ctx->currentWallet->currentSubaddressAccount()); - ui->historyWidget->setModel(m_ctx->currentWallet->historyModel(), m_ctx->currentWallet); + ui->historyWidget->setModel(m_ctx->currentWallet->coins(), m_ctx->currentWallet->historyModel(), m_ctx->currentWallet->history()); connect(m_ctx->currentWallet->history(), &TransactionHistory::txNoteChanged, [this]{ m_ctx->storeWallet(); }); @@ -678,31 +617,17 @@ void MainWindow::onWalletOpened() { connect(m_ctx->currentWallet->coins(), &Coins::coinThawed, [this]{ m_ctx->storeWallet(); }); - - this->touchbarShowWallet(); - this->updatePasswordIcon(); - - m_updateBytes.start(1000); } void MainWindow::onBalanceUpdated(double balance, double unlocked, const QString &balance_str, const QString &unlocked_str) { qDebug() << Q_FUNC_INFO; - bool hide = config()->get(Config::hideBalance).toBool(); - - auto label_str = QString("Balance: %1 XMR").arg(unlocked_str); + auto label_str = QString("Balance: %1 WOW").arg(unlocked_str); if(balance > unlocked) - label_str += QString(" (+%1 XMR unconfirmed)").arg(QString::number(balance - unlocked, 'f')); - - if (hide) { - label_str = "Balance: HIDDEN"; - } - + label_str += QString(" (+%1 WOW unconfirmed)").arg(QString::number(balance - unlocked, 'f')); m_statusLabelBalance->setText(label_str); - m_balanceWidget->setHidden(hide); } void MainWindow::onSynchronized() { - this->updateNetStats(); m_statusLabelStatus->setText("Synchronized"); this->onConnectionStatusChanged(Wallet::ConnectionStatus_Connected); } @@ -715,12 +640,11 @@ void MainWindow::onBlockchainSync(int height, int target) { void MainWindow::onRefreshSync(int height, int target) { QString heightText = QString("Wallet refresh: %1/%2").arg(height).arg(target); m_statusLabelStatus->setText(heightText); - this->updateNetStats(); } void MainWindow::onConnectionStatusChanged(int status) { - qDebug() << "Wallet connection status changed " << Utils::QtEnumToString(static_cast(status)); + qDebug() << "Wallet connection status changed " << status; // Update connection info in status bar. @@ -762,7 +686,7 @@ void MainWindow::onCreateTransactionSuccess(PendingTransaction *tx, const QStrin auto tx_err = tx->errorString(); qCritical() << tx_err; - if (m_ctx->currentWallet->connectionStatus() == Wallet::ConnectionStatus_WrongVersion) + if(m_ctx->currentWallet->connected() == Wallet::ConnectionStatus_WrongVersion) err = QString("%1 Wrong daemon version: %2").arg(err).arg(tx_err); else err = QString("%1 %2").arg(err).arg(tx_err); @@ -842,11 +766,7 @@ void MainWindow::create_status_bar() { m_statusLabelStatus->setTextInteractionFlags(Qt::TextSelectableByMouse); this->statusBar()->addWidget(m_statusLabelStatus); - m_statusLabelNetStats = new QLabel("", this); - m_statusLabelNetStats->setTextInteractionFlags(Qt::TextSelectableByMouse); - this->statusBar()->addWidget(m_statusLabelNetStats); - - m_statusLabelBalance = new QLabel("Balance: 0.00 XMR", this); + m_statusLabelBalance = new QLabel("Balance: 0.00 WOW", this); m_statusLabelBalance->setTextInteractionFlags(Qt::TextSelectableByMouse); this->statusBar()->addPermanentWidget(m_statusLabelBalance); @@ -878,13 +798,18 @@ void MainWindow::showWalletInfoDialog() { } void MainWindow::showSeedDialog() { - auto *dialog = new SeedDialog(m_ctx->currentWallet, this); + QString seed = m_ctx->currentWallet->getCacheAttribute("feather.seed"); + if (seed.isEmpty()) { + seed = m_ctx->currentWallet->getSeed(); + } + + auto *dialog = new SeedDialog(seed, this); dialog->exec(); dialog->deleteLater(); } void MainWindow::showConnectionStatusDialog() { - auto status = m_ctx->currentWallet->connectionStatus(); + auto status = m_ctx->currentWallet->connected(true); bool synchronized = m_ctx->currentWallet->synchronized(); QString statusMsg; @@ -911,22 +836,32 @@ void MainWindow::showConnectionStatusDialog() { statusMsg = "Unknown connection status (this should never happen)."; } - statusMsg += QString("\n\nTx: %1, Rx: %2").arg(Utils::formatBytes(m_ctx->currentWallet->getBytesSent()), - Utils::formatBytes(m_ctx->currentWallet->getBytesReceived())); - QMessageBox::information(this, "Connection Status", statusMsg); } void MainWindow::showPasswordDialog() { - auto *pdialog = new PasswordChangeDialog(this, m_ctx->currentWallet); - pdialog->exec(); - pdialog->deleteLater(); - this->updatePasswordIcon(); -} + auto *pdialog = new PasswordChangeDialog(this); + int ret = pdialog->exec(); + if (!ret) return; + + QApplication::setActiveWindow(this); + + QString currentPassword = pdialog->getCurrentPassword(); + QString newPassword = pdialog->getNewPassword(); -void MainWindow::updatePasswordIcon() { - QIcon icon = m_ctx->currentWallet->getPassword().isEmpty() ? QIcon(":/assets/images/unlock.svg") : QIcon(":/assets/images/lock.svg"); - m_statusBtnPassword->setIcon(icon); + if (currentPassword != m_ctx->walletPassword) { + QMessageBox::warning(this, "Error", "Incorrect password"); + return; + } + + if (m_ctx->currentWallet->setPassword(newPassword)) { + QMessageBox::information(this, "Information", "Password changed successfully"); + } + else { + QMessageBox::warning(this, "Error", QString("Error: %1").arg(m_ctx->currentWallet->errorString())); + } + + pdialog->deleteLater(); } void MainWindow::showRestoreHeightDialog() { @@ -1018,9 +953,7 @@ void MainWindow::menuAboutClicked() { } void MainWindow::menuSettingsClicked() { - m_windowSettings->raise(); m_windowSettings->show(); - m_windowSettings->activateWindow(); } void MainWindow::menuSignVerifyClicked() { @@ -1063,22 +996,22 @@ void MainWindow::closeEvent(QCloseEvent *event) { } void MainWindow::donateButtonClicked() { - double donation = AppContext::prices->convert("EUR", "XMR", m_ctx->featherDonationAmount); + double donation = AppContext::prices->convert("EUR", "WOW", m_ctx->featherDonationAmount); if(donation <= 0) donation = 1.337; ui->sendWidget->fill(m_ctx->featherDonationAddress, "Donation to the Feather development team", donation); - ui->tabWidget->setCurrentIndex(Tabs::SEND); + ui->tabWidget->setCurrentIndex(2); } void MainWindow::showHistoryTab() { this->raise(); - ui->tabWidget->setCurrentIndex(Tabs::HISTORY); + ui->tabWidget->setCurrentIndex(1); } void MainWindow::showSendTab() { this->raise(); - ui->tabWidget->setCurrentIndex(Tabs::SEND); + ui->tabWidget->setCurrentIndex(2); } void MainWindow::showCalcWindow() { @@ -1087,7 +1020,7 @@ void MainWindow::showCalcWindow() { void MainWindow::showSendScreen(const CCSEntry &entry) { ui->sendWidget->fill(entry); - ui->tabWidget->setCurrentIndex(Tabs::SEND); + ui->tabWidget->setCurrentIndex(2); } void MainWindow::onViewOnBlockExplorer(const QString &txid) { @@ -1105,29 +1038,6 @@ void MainWindow::onAddContact(const QString &address, const QString &name) { } } -void MainWindow::importContacts() { - const QString targetFile = QFileDialog::getOpenFileName(this, "Import CSV file", QDir::homePath(), "CSV Files (*.csv)"); - if(targetFile.isEmpty()) return; - - auto *model = m_ctx->currentWallet->addressBookModel(); - QMapIterator i(model->readCSV(targetFile)); - int inserts = 0; - while (i.hasNext()) { - i.next(); - bool addressValid = WalletManager::addressValid(i.value(), m_ctx->currentWallet->nettype()); - if(addressValid) { - m_ctx->currentWallet->addressBook()->addRow(i.value(), "", i.key()); - inserts++; - } - } - - if(inserts > 0) { - m_ctx->storeWallet(); - } - - QMessageBox::information(this, "Contacts imported", QString("Total contacts imported: %1").arg(inserts)); -} - MainWindow *MainWindow::getInstance() { return pMainWindow; } @@ -1316,33 +1226,6 @@ void MainWindow::createUnsignedTxDialog(UnsignedTransaction *tx) { dialog->deleteLater(); } -void MainWindow::importTransaction() { - - auto result = QMessageBox::warning(this, "Warning", "Using this feature may allow a remote node to associate the transaction with your IP address.\n" - "\n" - "Connect to a trusted node or run Feather over Tor if network level metadata leakage is included in your threat model.", - QMessageBox::Ok | QMessageBox::Cancel); - if (result == QMessageBox::Ok) { - auto *dialog = new TxImportDialog(this, m_ctx); - dialog->exec(); - dialog->deleteLater(); - } -} - -void MainWindow::updateNetStats() { - if (!m_ctx->currentWallet) { - m_statusLabelNetStats->setText(""); - return; - } - - if (m_ctx->currentWallet->connectionStatus() == Wallet::ConnectionStatus_Connected && m_ctx->currentWallet->synchronized()) { - m_statusLabelNetStats->setText(""); - return; - } - - m_statusLabelNetStats->setText(QString("(D: %1)").arg(Utils::formatBytes(m_ctx->currentWallet->getBytesReceived()))); -} - MainWindow::~MainWindow() { delete ui; } diff --git a/src/model/CoinsModel.cpp b/src/model/CoinsModel.cpp index 655abc2..ccd54ed 100644 --- a/src/model/CoinsModel.cpp +++ b/src/model/CoinsModel.cpp @@ -6,7 +6,7 @@ #include "Coins.h" #include #include "ModelUtils.h" -#include "globals.h" +#include "appcontext.h" #include #include @@ -77,7 +77,7 @@ QVariant CoinsModel::data(const QModelIndex &index, int role) const result = QBrush(QColor(173, 216, 230)); } else if (!cInfo.unlocked()) { - result = QBrush(QColor("#60993E")); + result = QBrush(QColor("#BFFF00")); } } else if (role == Qt::TextAlignmentRole) { @@ -191,18 +191,14 @@ QVariant CoinsModel::parseTransactionInfo(const CoinsInfo &cInfo, int column, in case SpentHeight: return cInfo.spentHeight(); case Amount: - { - if (role == Qt::UserRole) { - return cInfo.amount() / globals::cdiv; - } - return QString::number(cInfo.amount() / globals::cdiv, 'f', 12); - } + return QString::number(cInfo.amount() / AppContext::cdiv, 'f', 12); case Frozen: return cInfo.frozen(); + default: { qCritical() << "Unimplemented role"; return QVariant(); } } -} \ No newline at end of file +} diff --git a/src/model/TransactionHistoryModel.cpp b/src/model/TransactionHistoryModel.cpp index 254d30f..293086c 100644 --- a/src/model/TransactionHistoryModel.cpp +++ b/src/model/TransactionHistoryModel.cpp @@ -4,7 +4,6 @@ #include "TransactionHistoryModel.h" #include "TransactionHistory.h" #include "TransactionInfo.h" -#include "globals.h" #include #include @@ -119,7 +118,7 @@ QVariant TransactionHistoryModel::data(const QModelIndex &index, int role) const case Column::FiatAmount: case Column::Amount: { - if (tInfo.direction() == TransactionInfo::Direction_Out) { + if (tInfo.direction() == TransactionInfo::Direction_Out && tInfo.amount() > 0) { result = QVariant(QColor("#BC1E1E")); } } @@ -152,8 +151,8 @@ QVariant TransactionHistoryModel::parseTransactionInfo(const TransactionInfo &tI } case Column::Amount: { - QString amount = QString::number(tInfo.balanceDelta() / globals::cdiv, 'f', 4); - amount = (tInfo.direction() == TransactionInfo::Direction_Out) ? "-" + amount : "+" + amount; + QString amount = QString::number(tInfo.atomicAmount() / AppContext::cdiv, 'f', 4); + amount = (tInfo.direction() == TransactionInfo::Direction_Out && tInfo.amount() > 0) ? "-" + amount : "+" + amount; return amount; } case Column::TxID: @@ -164,7 +163,7 @@ QVariant TransactionHistoryModel::parseTransactionInfo(const TransactionInfo &tI if (usd_price == 0.0) return QVariant("?"); - double usd_amount = usd_price * (tInfo.balanceDelta() / globals::cdiv); + double usd_amount = usd_price * tInfo.amount(); if(this->preferredFiatSymbol != "USD") usd_amount = AppContext::prices->convert("USD", this->preferredFiatSymbol, usd_amount); double fiat_rounded = ceil(Utils::roundSignificant(usd_amount, 3) * 100.0) / 100.0; @@ -239,4 +238,4 @@ Qt::ItemFlags TransactionHistoryModel::flags(const QModelIndex &index) const { return QAbstractTableModel::flags(index) | Qt::ItemIsEditable; return QAbstractTableModel::flags(index); -} \ No newline at end of file +} diff --git a/src/sendwidget.cpp b/src/sendwidget.cpp index 643c28f..af8a64e 100644 --- a/src/sendwidget.cpp +++ b/src/sendwidget.cpp @@ -83,7 +83,7 @@ void SendWidget::sendClicked() { return; } - if (currency != "XMR") { + if (currency != "WOW") { amount = this->conversionAmount(); if(amount <= 0.0) { QMessageBox::warning(this, "Fiat conversion error", "Could not create transaction."); @@ -129,12 +129,12 @@ void SendWidget::updateConversionLabel() { QString conversionAmountStr = [this]{ QString currency = ui->comboCurrencySelection->currentText(); - if (currency != "XMR") { - return QString("~%1 XMR").arg(QString::number(this->conversionAmount(), 'f')); + if (currency != "WOW") { + return QString("~%1 WOW").arg(QString::number(this->conversionAmount(), 'f')); } else { auto preferredFiatCurrency = config()->get(Config::preferredFiatCurrency).toString(); - double conversionAmount = AppContext::prices->convert("XMR", preferredFiatCurrency, this->amount()); + double conversionAmount = AppContext::prices->convert("WOW", preferredFiatCurrency, this->amount()); return QString("~%1 %2").arg(QString::number(conversionAmount, 'f', 2), preferredFiatCurrency); }; }(); @@ -145,7 +145,7 @@ void SendWidget::updateConversionLabel() { double SendWidget::conversionAmount() { QString currency = ui->comboCurrencySelection->currentText(); - return AppContext::prices->convert(currency, "XMR", this->amount()); + return AppContext::prices->convert(currency, "WOW", this->amount()); } double SendWidget::amount() { diff --git a/src/sendwidget.ui b/src/sendwidget.ui index fb97ee7..a87d0b8 100644 --- a/src/sendwidget.ui +++ b/src/sendwidget.ui @@ -105,7 +105,48 @@
- + + + + WOW + + + + + EUR + + + + + USD + + + + + GBP + + + + + AUD + + + + + JPY + + + + + NZD + + + + + RMB + + + diff --git a/src/settings.ui b/src/settings.ui index 1beb169..911588c 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -131,12 +131,12 @@ - CCS proposals + WFS proposals - /r/monero + /r/wownero @@ -162,17 +162,7 @@ - exploremonero.com - - - - - xmrchain.net - - - - - moneroblocks.info + explore.wownero.com diff --git a/src/utils/config.cpp b/src/utils/config.cpp index 33eb201..d312a48 100644 --- a/src/utils/config.cpp +++ b/src/utils/config.cpp @@ -30,12 +30,12 @@ static const QHash configStrings = { {Config::donateBeg,{QS("donateBeg"), 1}}, {Config::skin,{QS("skin"), "light"}}, {Config::preferredFiatCurrency,{QS("preferredFiatCurrency"), "USD"}}, - {Config::blockExplorer,{QS("blockExplorer"), "exploremonero.com"}}, + {Config::blockExplorer,{QS("blockExplorer"), "explore.wownero.com"}}, {Config::walletDirectory,{QS("walletDirectory"), ""}}, {Config::autoOpenWalletPath,{QS("autoOpenWalletPath"), ""}}, {Config::walletPath,{QS("walletPath"), ""}}, {Config::xmrigPath,{QS("xmrigPath"), ""}}, - {Config::xmrigPool,{QS("xmrigPool"), "pool.xmr.pt:9000"}}, + {Config::xmrigPool,{QS("xmrigPool"), "cryptonote.social:2223"}}, {Config::nodes,{QS("nodes"), "{}"}}, {Config::websocketEnabled,{QS("websocketEnabled"), true}}, {Config::nodeSource,{QS("nodeSource"), 0}}, @@ -115,7 +115,7 @@ Config::Config(QObject* parent) QString appImagePath = qgetenv("APPIMAGE"); QFileInfo appImageDir(appImagePath); - QDir portablePath(appImageDir.absoluteDir().path() + "/.feather"); + QDir portablePath(appImageDir.absoluteDir().path() + "/.feather-wow"); if (portablePath.mkpath(".")) { configPath = portablePath.path(); } @@ -124,7 +124,7 @@ Config::Config(QObject* parent) } } - configPath += "/.config/feather/settings.json"; + configPath += "/.config/feather-wow/settings.json"; init(QDir::toNativeSeparators(configPath)); } @@ -150,4 +150,4 @@ Config* Config::instance() } return m_instance; -} \ No newline at end of file +} diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp index 1931175..08c2318 100644 --- a/src/utils/utils.cpp +++ b/src/utils/utils.cpp @@ -372,32 +372,7 @@ QString Utils::copyFromClipboard() { } QString Utils::blockExplorerLink(const QString &blockExplorer, NetworkType::Type nettype, const QString &txid) { - if (blockExplorer == "exploremonero.com") { - if (nettype == NetworkType::MAINNET) { - return QString("https://exploremonero.com/transaction/%1").arg(txid); - } - } - else if (blockExplorer == "moneroblocks.info") { - if (nettype == NetworkType::MAINNET) { - return QString("https://moneroblocks.info/tx/%1").arg(txid); - } - } - else if (blockExplorer == "blockchair.com") { - if (nettype == NetworkType::MAINNET) { - return QString("https://blockchair.com/monero/transaction/%1").arg(txid); - } - } - - switch (nettype) { - case NetworkType::MAINNET: - return QString("https://xmrchain.net/tx/%1").arg(txid); - case NetworkType::STAGENET: - return QString("https://stagenet.xmrchain.net/tx/%1").arg(txid); - case NetworkType::TESTNET: - return QString("https://testnet.xmrchain.net/tx/%1").arg(txid); - } - - return QString(""); + return QString("https://explore.wownero.com/tx/%1").arg(txid); } QList Utils::procList() { @@ -464,11 +439,11 @@ QString Utils::getUnixAccountName() { QString Utils::xdgDesktopEntry(){ return QString( "[Desktop Entry]\n" - "Name=Feather\n" - "GenericName=Feather\n" - "X-GNOME-FullName=Feather\n" - "Comment=a free Monero desktop wallet\n" - "Keywords=Monero;\n" + "Name=Feather-WOW\n" + "GenericName=Feather-WOW\n" + "X-GNOME-FullName=Feather-WOW\n" + "Comment=a free Wownero desktop wallet\n" + "Keywords=Wownero;\n" "Exec=\"%1\" %u\n" "Terminal=false\n" "Type=Application\n" @@ -541,8 +516,9 @@ QFont Utils::relativeFont(int delta) { double Utils::roundSignificant(double N, double n) { int h; - double b, d, e, i, j, m, f; + double l, a, b, c, d, e, i, j, m, f, g; b = N; + c = floor(N); for (i = 0; b >= 1; ++i) b = b / 10; @@ -563,37 +539,3 @@ double Utils::roundSignificant(double N, double n) j = j / m; return j; } - -QString Utils::formatBytes(quint64 bytes) -{ - QVector sizes = { "B", "KB", "MB", "GB", "TB" }; - - int i; - double _data; - for (i = 0; i < sizes.count() && bytes >= 1000; i++, bytes /= 1000) - _data = bytes / 1000.0; - - if (_data < 0) - _data = 0; - - // unrealistic - if (_data > 1000) - _data = 0; - - return QString("%1 %2").arg(QString::number(_data, 'f', 1), sizes[i]); -} - -QString Utils::amountToCurrencyString(double amount, const QString ¤cyCode) { - QLocale locale; - QList allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - for (const auto& locale_: allLocales) { - if (locale_.currencySymbol(QLocale::CurrencyIsoCode) == currencyCode) { - locale = locale_; - } - } - - if (currencyCode == "USD") - return locale.toCurrencyString(amount, "$"); - - return locale.toCurrencyString(amount); -} \ No newline at end of file diff --git a/src/utils/utils.h b/src/utils/utils.h index a801cab..1314610 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -49,8 +49,8 @@ struct xdgDesktopEntryPaths { }; const xdgDesktopEntryPaths xdgPaths = { - QString("%1/feather.desktop").arg(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation)), - QString("%1/.local/share/icons/feather.png").arg(QDir::homePath()), + QString("%1/feather-wow.desktop").arg(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation)), + QString("%1/.local/share/icons/wownero.png").arg(QDir::homePath()), QString("/") }; diff --git a/src/utils/xmrig.cpp b/src/utils/xmrig.cpp index 994d60e..6ebd4d9 100644 --- a/src/utils/xmrig.cpp +++ b/src/utils/xmrig.cpp @@ -65,7 +65,7 @@ void XmRig::start(const QString &path, QStringList arguments; arguments << "-o" << address; - arguments << "-a" << "rx/0"; + arguments << "-a" << "rx/wow"; arguments << "-u" << username; if(!password.isEmpty()) arguments << "-p" << password; diff --git a/src/widgets/ccsprogressdelegate.cpp b/src/widgets/ccsprogressdelegate.cpp index 4fdb82a..2d49b92 100644 --- a/src/widgets/ccsprogressdelegate.cpp +++ b/src/widgets/ccsprogressdelegate.cpp @@ -31,7 +31,7 @@ void CCSProgressDelegate::paint(QPainter *painter, const QStyleOptionViewItem &o progressBarOption.textVisible = true; QSharedPointer entry = m_model->entry(index.row()); - auto target = QString("%1/%2 XMR").arg(entry->raised_amount).arg(entry->target_amount); + auto target = QString("%1/%2 WOW").arg(entry->raised_amount).arg(entry->target_amount); auto progress = (int)entry->percentage_funded; progressBarOption.progress = progress < 0 ? 0 : progress; progressBarOption.text = target; diff --git a/src/widgets/restoreheightwidget.ui b/src/widgets/restoreheightwidget.ui index 00cb7d3..70c4553 100644 --- a/src/widgets/restoreheightwidget.ui +++ b/src/widgets/restoreheightwidget.ui @@ -53,7 +53,7 @@ - 2014-04-18 + 2018-04-1 Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/src/widgets/xmrigwidget.cpp b/src/widgets/xmrigwidget.cpp index 0795440..2f08002 100644 --- a/src/widgets/xmrigwidget.cpp +++ b/src/widgets/xmrigwidget.cpp @@ -24,7 +24,7 @@ XMRigWidget::XMRigWidget(AppContext *ctx, QWidget *parent) : { ui->setupUi(this); - QPixmap p(":assets/images/xmrig.svg"); + QPixmap p(":assets/images/mining.png"); ui->lbl_logo->setPixmap(p.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); // table @@ -180,6 +180,7 @@ void XMRigWidget::onStartClicked() { } m_ctx->XMRig->start(xmrigPath, m_threads, address, username, password, ui->relayTor->isChecked(), ui->check_tls->isChecked()); + ui->btn_start->setEnabled(false); ui->btn_stop->setEnabled(true); emit miningStarted(); diff --git a/src/widgets/xmrigwidget.h b/src/widgets/xmrigwidget.h index 231223f..f9ec611 100644 --- a/src/widgets/xmrigwidget.h +++ b/src/widgets/xmrigwidget.h @@ -57,7 +57,7 @@ private: QMenu *m_contextMenu; unsigned int m_threads; QStringList m_urls; - QStringList m_pools{"pool.xmr.pt:9000", "pool.supportxmr.com:9000", "mine.xmrpool.net:443", "xmrpool.eu:9999", "xmr-eu1.nanopool.org:14433", "pool.minexmr.com:6666", "us-west.minexmr.com:6666", "monerohash.com:9999", "cryptonote.social:5555", "cryptonote.social:5556"}; + QStringList m_pools{"cryptonote.social:2223", "pool.hashvault.pro:8888"}; }; #endif // REDDITWIDGET_H diff --git a/src/wizard/menu.cpp b/src/wizard/menu.cpp index fc16cba..0b264cc 100644 --- a/src/wizard/menu.cpp +++ b/src/wizard/menu.cpp @@ -16,7 +16,7 @@ MenuPage::MenuPage(AppContext *ctx, QWidget *parent) : ui(new Ui::MenuPage), m_ctx(ctx) { ui->setupUi(this); - this->setTitle("Welcome to feather"); + this->setTitle("Welcome to feather-WOW"); this->setButtonText(QWizard::FinishButton, "Open recent wallet"); ui->radioCreate->setChecked(true); } diff --git a/src/wizard/network.cpp b/src/wizard/network.cpp index f3cbd23..1fc8a24 100644 --- a/src/wizard/network.cpp +++ b/src/wizard/network.cpp @@ -16,7 +16,7 @@ NetworkPage::NetworkPage(AppContext *ctx, QWidget *parent) : ui(new Ui::NetworkPage), m_ctx(ctx) { ui->setupUi(this); - this->setTitle("Welcome to Feather!"); + this->setTitle("Welcome to Feather-WOW!"); this->setButtonText(QWizard::FinishButton, "walletKeysFilesModel"); ui->customFrame->hide(); diff --git a/src/wizard/network.ui b/src/wizard/network.ui index 62a5460..f91771a 100644 --- a/src/wizard/network.ui +++ b/src/wizard/network.ui @@ -17,7 +17,7 @@ - How would you like to connect to the Monero network? + How would you like to connect to the Wownero network? true @@ -204,7 +204,7 @@ - Automatically connect to a remote node, hosted by the feather team and various trusted Monero community members. These nodes are provided as "best effort". + Automatically connect to a remote node, hosted by the feather team and various trusted Wownero community members. These nodes are provided as "best effort". true diff --git a/src/wizard/walletwizard.cpp b/src/wizard/walletwizard.cpp index 82bbf61..75d03f5 100644 --- a/src/wizard/walletwizard.cpp +++ b/src/wizard/walletwizard.cpp @@ -20,7 +20,7 @@ WalletWizard::WalletWizard(AppContext *ctx, WalletWizard::Page startPage, QWidget *parent) : QWizard(parent), m_ctx(ctx) { - this->setWindowTitle("Welcome to feather"); + this->setWindowTitle("Welcome to feather-WOW"); this->setWindowIcon(QIcon(":/assets/images/appicons/64x64.png")); auto openWalletPage = new OpenWalletPage(m_ctx, this); auto createWallet = new CreateWalletPage(m_ctx, this); @@ -38,7 +38,30 @@ WalletWizard::WalletWizard(AppContext *ctx, WalletWizard::Page startPage, QWidge else setStartId(Page_Menu); - setPixmap(QWizard::WatermarkPixmap, QPixmap(":/assets/images/photos/1.png")); + QStringList headers = { + ":/assets/images/photos/wow1.png", + ":/assets/images/photos/wow2.png", + ":/assets/images/photos/wow3.png", + ":/assets/images/photos/wow4.png", + ":/assets/images/photos/wow5.png", + ":/assets/images/photos/wow6.png", + ":/assets/images/photos/wow7.png", + ":/assets/images/photos/wow8.png", + ":/assets/images/photos/wow9.png", + ":/assets/images/photos/wow10.png", + ":/assets/images/photos/wow11.png", + ":/assets/images/photos/wow12.png", + ":/assets/images/photos/wow13.png", + ":/assets/images/photos/wow14.png", + ":/assets/images/photos/wow15.png", + ":/assets/images/photos/wow16.png", + ":/assets/images/photos/wow17.png", + ":/assets/images/photos/wow18.png", + ":/assets/images/photos/wow19.png" + }; + int random = QRandomGenerator::global()->bounded(headers.count()); + auto header = headers.at(random); + setPixmap(QWizard::WatermarkPixmap, QPixmap(header)); setWizardStyle(WizardStyle::ModernStyle); setOption(QWizard::NoBackButtonOnStartPage); diff --git a/src/xmrtowidget.cpp b/src/xmrtowidget.cpp index 6adad5d..02649aa 100644 --- a/src/xmrtowidget.cpp +++ b/src/xmrtowidget.cpp @@ -99,7 +99,7 @@ void XMRToWidget::onCreateOrder() { auto available = m_unlockedBalance; if(amount_xmr > available){ - Utils::showMessageBox("Cannot create XMR.To order", "Not enough Monero to create order.", false); + Utils::showMessageBox("Cannot create XMR.To order", "Not enough Wownero to create order.", false); return; } diff --git a/utils/Info.plist b/utils/Info.plist index 00d3929..aa3a29c 100644 --- a/utils/Info.plist +++ b/utils/Info.plist @@ -3,7 +3,7 @@ LSMinimumSystemVersion - 10.10.0 + 10.0.0 NSPrincipalClass NSApplication @@ -18,16 +18,16 @@ ???? CFBundleExecutable - feather + feather-wow CFBundleName - Feather + Feather-WOW NSHumanReadableCopyright Copyright © 2014-2021 The Monero Project CFBundleIdentifier - org.monero-project.feather + org.monero-project.feather-wow CFBundleVersion @VERSION_LONG@ @@ -42,18 +42,10 @@ CFBundleURLName - monero Handler + wownero Handler CFBundleURLSchemes - monero - - - - CFBundleURLName - moneroseed Handler - CFBundleURLSchemes - - moneroseed + wownero diff --git a/utils/build_macos.sh b/utils/build_macos.sh index f96db3e..c3b00a9 100644 --- a/utils/build_macos.sh +++ b/utils/build_macos.sh @@ -6,20 +6,20 @@ echo "[+] hash: $HASH" export DRONE=true echo "[+] Building" -rm ~/feather.zip 2>&1 >/dev/null -cd ~/feather -git fetch --all +rm ~/feather-wow.zip 2>&1 >/dev/null +cd ~/feather-wow +git fetch git reset --hard "$HASH" git submodule update --init --depth 120 monero git submodule update --init --depth 120 --recursive monero -cp "/Users/administrator/tor/libevent-2.1.7.dylib" "/Users/administrator/feather/src/assets/exec/libevent-2.1.7.dylib" +cp "/Users/administrator/tor/libevent-2.1.7.dylib" "/Users/administrator/feather-wow/src/assets/exec/libevent-2.1.7.dylib" CMAKE_PREFIX_PATH="~/Qt/5.15.1/clang_64" TOR="/Users/administrator/tor/tor" XMRIG="/Users/administrator/xmrig/xmrig" make -j3 mac-release if [[ $? -eq 0 ]]; then echo "[+] Feather built OK" - cd ~/feather/build/bin - zip -qr ~/feather.zip feather.app + cd ~/feather-wow/build/bin + zip -qr ~/feather-wow.zip feather-wow.app else echo "[+] Error!" exit 1;