mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	Merge pull request 'rename freather to wowlet' (#36) from wowario/wowlet:wow-rename into master
Reviewed-on: https://git.wownero.com/wowlet/wowlet/pulls/36
This commit is contained in:
		
						commit
						d23ffd1972
					
				
					 114 changed files with 367 additions and 465 deletions
				
			
		
							
								
								
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -8,8 +8,8 @@ build/*
 | 
			
		|||
CMakeCache.txt
 | 
			
		||||
CMakeFiles
 | 
			
		||||
cmake_install.cmake
 | 
			
		||||
feather_autogen/
 | 
			
		||||
feather.cbp
 | 
			
		||||
wowlet_autogen/
 | 
			
		||||
wowlet.cbp
 | 
			
		||||
src/tor/*
 | 
			
		||||
!src/tor/.gitkeep
 | 
			
		||||
src/config-feather.h
 | 
			
		||||
src/config-wowlet.h
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ Static builds via Docker are done in 3 steps:
 | 
			
		|||
### Linux (reproducible)
 | 
			
		||||
 | 
			
		||||
The docker image for reproducible Linux static builds uses Ubuntu 16.04 and compiles the required libraries statically 
 | 
			
		||||
so that the resulting Feather binary is static. For more information, check the Dockerfile: `Dockerfile`.
 | 
			
		||||
so that the resulting `wowlet` binary is static. For more information, check the Dockerfile: `Dockerfile`.
 | 
			
		||||
 | 
			
		||||
#### 1. Clone
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ git clone --recursive https://git.wownero.com/wowlet/wowlet.git
 | 
			
		|||
 | 
			
		||||
Get the latest LTS from here: https://www.qt.io/offline-installers and install.
 | 
			
		||||
 | 
			
		||||
Build Feather.
 | 
			
		||||
Build WOWlet.
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
CMAKE_PREFIX_PATH=~/Qt5.15.1/5.15.1/clang_64 make mac-release
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
cmake_minimum_required(VERSION 3.13)
 | 
			
		||||
project(feather)
 | 
			
		||||
project(wowlet)
 | 
			
		||||
 | 
			
		||||
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ set(VERSION "beta-1")
 | 
			
		|||
 | 
			
		||||
option(FETCH_DEPS "Download dependencies if they are not found" ON)
 | 
			
		||||
option(XMRIG "Include XMRig module" ON)
 | 
			
		||||
option(TOR_BIN "Path to Tor binary to embed inside Feather" OFF)
 | 
			
		||||
option(TOR_BIN "Path to Tor binary to embed inside WOWlet" OFF)
 | 
			
		||||
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)
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ get_directory_property(UNBOUND_LIBRARY DIRECTORY "monero" DEFINITION UNBOUND_LIB
 | 
			
		|||
 | 
			
		||||
include(CMakePackageConfigHelpers)
 | 
			
		||||
include(VersionMonero)
 | 
			
		||||
include(VersionFeather)
 | 
			
		||||
include(VersionWowlet)
 | 
			
		||||
 | 
			
		||||
include_directories(${EASYLOGGING_INCLUDE})
 | 
			
		||||
link_directories(${EASYLOGGING_LIBRARY_DIRS})
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ find_package(monero-seed CONFIG)
 | 
			
		|||
if(NOT monero-seed_FOUND)
 | 
			
		||||
  if(FETCH_DEPS)
 | 
			
		||||
    FetchContent_Declare(monero-seed
 | 
			
		||||
      GIT_REPOSITORY https://git.wownero.com/feather/monero-seed.git)
 | 
			
		||||
      GIT_REPOSITORY https://git.wownero.com/wowlet/monero-seed.git)
 | 
			
		||||
    FetchContent_GetProperties(monero-seed)
 | 
			
		||||
    if(NOT monero-seed_POPULATED)
 | 
			
		||||
      message(STATUS "Fetching monero-seed")
 | 
			
		||||
| 
						 | 
				
			
			@ -183,7 +183,7 @@ if("$ENV{DRONE}" STREQUAL "true")
 | 
			
		|||
    message(STATUS "We are inside a static compile with Drone CI")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# To build Feather with embedded (and static) Tor, pass CMake -DTOR_BIN=/path/to/tor
 | 
			
		||||
# To build WOWlet with embedded (and static) Tor, pass CMake -DTOR_BIN=/path/to/tor
 | 
			
		||||
if(TOR_BIN)
 | 
			
		||||
    if(APPLE)
 | 
			
		||||
        execute_process(COMMAND bash -c "touch ${CMAKE_CURRENT_SOURCE_DIR}/src/tor/libevent-2.1.7.dylib")
 | 
			
		||||
| 
						 | 
				
			
			@ -194,7 +194,7 @@ if(TOR_BIN)
 | 
			
		|||
        set(TOR_VERSION "${out}")
 | 
			
		||||
    endif()
 | 
			
		||||
    message(STATUS "${TOR_VERSION}")
 | 
			
		||||
    configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")
 | 
			
		||||
    configure_file("cmake/config-wowlet.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-wowlet.h")
 | 
			
		||||
 | 
			
		||||
    # on the buildbot Tor is baked into the image
 | 
			
		||||
    # - linux: See `Dockerfile`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -392,7 +392,7 @@ RUN git clone -b v4.0.2 --depth 1 https://github.com/fukuchi/libqrencode.git &&
 | 
			
		|||
    make -j$THREADS install && \
 | 
			
		||||
    rm -rf $(pwd)
 | 
			
		||||
 | 
			
		||||
RUN git clone https://git.wownero.com/feather/monero-seed.git && \
 | 
			
		||||
RUN git clone https://git.wownero.com/wowlet/monero-seed.git && \
 | 
			
		||||
    cd monero-seed && \
 | 
			
		||||
    git reset --hard 4674ef09b6faa6fe602ab5ae0b9ca8e1fd7d5e1b && \
 | 
			
		||||
    cmake -DCMAKE_BUILD_TYPE=Release -Bbuild && \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -172,7 +172,7 @@ RUN git clone -b tor-0.4.5.5-rc --depth 1 https://git.torproject.org/tor.git &&
 | 
			
		|||
    rm -rf $(pwd) && \
 | 
			
		||||
    strip -s -D /usr/local/tor/bin/tor.exe
 | 
			
		||||
 | 
			
		||||
RUN git clone https://git.wownero.com/feather/monero-seed.git && \
 | 
			
		||||
RUN git clone https://git.wownero.com/wowlet/monero-seed.git && \
 | 
			
		||||
    cd monero-seed && \
 | 
			
		||||
    git reset --hard 4674ef09b6faa6fe602ab5ae0b9ca8e1fd7d5e1b && \
 | 
			
		||||
    cmake -DCMAKE_INSTALL_PREFIX=/depends/x86_64-w64-mingw32 \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ RUN apt install -y \
 | 
			
		|||
    wget \
 | 
			
		||||
    xz-utils
 | 
			
		||||
 | 
			
		||||
RUN git clone -b feather-patch --depth 1 https://git.wownero.com/feather/mxe.git && \
 | 
			
		||||
RUN git clone -b wowlet-patch --depth 1 https://git.wownero.com/wowlet/mxe.git && \
 | 
			
		||||
    cd mxe && \
 | 
			
		||||
    make -j$THREADS MXE_TARGETS='x86_64-w64-mingw32.static' gcc libqrencode pkgconf libgpg_error libgcrypt cmake libsodium lzma readline libzmq boost qtbase qtsvg qtwebsockets qtimageformats qtmultimedia
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ RUN ln -s /mxe/usr/x86_64-w64-mingw32.static/lib/libsicuin.a /mxe/usr/x86_64-w64
 | 
			
		|||
 | 
			
		||||
ENV PATH="/mxe/usr/bin/:$PATH"
 | 
			
		||||
 | 
			
		||||
RUN git clone https://git.wownero.com/feather/monero-seed.git && \
 | 
			
		||||
RUN git clone https://git.wownero.com/wowlet/monero-seed.git && \
 | 
			
		||||
    cd monero-seed && \
 | 
			
		||||
    cmake -DCMAKE_BUILD_TYPE=Release -Bbuild && \
 | 
			
		||||
    make -Cbuild -j$THREADS && \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,5 @@ The following keys may be used to communicate sensitive information to developer
 | 
			
		|||
| Name | Fingerprint |
 | 
			
		||||
|------|-------------|
 | 
			
		||||
| dsc | 1BFD 40F9 B0E2 B40D C8C7 FD4A 521F 1E79 91AA 42DC |
 | 
			
		||||
| tobtoht | C5AB E5C0 E50F A2B3 F14A B92D 1CAD D27F 41F4 5C3C |
 | 
			
		||||
 | 
			
		||||
Public keys can be found in `utils/pubkeys`.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,4 +46,4 @@ else ()
 | 
			
		|||
    set(MONERO_VERSION "${TAG}")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")
 | 
			
		||||
configure_file("cmake/config-wowlet.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-wowlet.h")
 | 
			
		||||
| 
						 | 
				
			
			@ -10,8 +10,8 @@ if(RET)
 | 
			
		|||
    # Something went wrong, set the version tag to -unknown
 | 
			
		||||
 | 
			
		||||
    message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
 | 
			
		||||
    set(FEATHER_BRANCH "unknown")
 | 
			
		||||
    configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")
 | 
			
		||||
    set(WOWLET_BRANCH "unknown")
 | 
			
		||||
    configure_file("cmake/config-wowlet.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-wowlet.h")
 | 
			
		||||
else()
 | 
			
		||||
    string(SUBSTRING ${COMMIT} 0 9 COMMIT)
 | 
			
		||||
    message(STATUS "You are currently on commit ${COMMIT}")
 | 
			
		||||
| 
						 | 
				
			
			@ -21,19 +21,19 @@ else()
 | 
			
		|||
 | 
			
		||||
    if(NOT TAGGEDCOMMIT)
 | 
			
		||||
        message(STATUS "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
 | 
			
		||||
        set(FEATHER_BRANCH "${COMMIT}")
 | 
			
		||||
        set(WOWLET_BRANCH "${COMMIT}")
 | 
			
		||||
    else()
 | 
			
		||||
        message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
 | 
			
		||||
 | 
			
		||||
        # Check if we're building that tagged commit or a different one
 | 
			
		||||
        if(COMMIT STREQUAL TAGGEDCOMMIT)
 | 
			
		||||
            message(STATUS "You are building a tagged release")
 | 
			
		||||
            set(FEATHER_BRANCH "release")
 | 
			
		||||
            set(WOWLET_BRANCH "release")
 | 
			
		||||
        else()
 | 
			
		||||
            message(STATUS "You are ahead of or behind a tagged release")
 | 
			
		||||
            set(FEATHER_BRANCH "${COMMIT}")
 | 
			
		||||
            set(WOWLET_BRANCH "${COMMIT}")
 | 
			
		||||
        endif()
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    configure_file("cmake/config-feather.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-feather.h")
 | 
			
		||||
    configure_file("cmake/config-wowlet.h.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/src/config-wowlet.h")
 | 
			
		||||
endif()
 | 
			
		||||
| 
						 | 
				
			
			@ -1,12 +0,0 @@
 | 
			
		|||
#ifndef FEATHER_VERSION_H
 | 
			
		||||
#define FEATHER_VERSION_H
 | 
			
		||||
 | 
			
		||||
#define FEATHER_VERSION "@VERSION@"
 | 
			
		||||
#define FEATHER_BRANCH "@FEATHER_BRANCH@"
 | 
			
		||||
 | 
			
		||||
#define MONERO_VERSION "@MONERO_VERSION@"
 | 
			
		||||
#define MONERO_BRANCH "@MONERO_BRANCH@"
 | 
			
		||||
 | 
			
		||||
#define TOR_VERSION "@TOR_VERSION@"
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_VERSION_H
 | 
			
		||||
							
								
								
									
										12
									
								
								cmake/config-wowlet.h.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								cmake/config-wowlet.h.cmake
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
#ifndef WOWLET_VERSION_H
 | 
			
		||||
#define WOWLET_VERSION_H
 | 
			
		||||
 | 
			
		||||
#define WOWLET_VERSION "@VERSION@"
 | 
			
		||||
#define WOWLET_BRANCH "@WOWLET_BRANCH@"
 | 
			
		||||
 | 
			
		||||
#define MONERO_VERSION "@MONERO_VERSION@"
 | 
			
		||||
#define MONERO_BRANCH "@MONERO_BRANCH@"
 | 
			
		||||
 | 
			
		||||
#define TOR_VERSION "@TOR_VERSION@"
 | 
			
		||||
 | 
			
		||||
#endif //WOWLET_VERSION_H
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ file(GLOB_RECURSE SRC_SOURCES *.cpp)
 | 
			
		|||
file(GLOB_RECURSE SRC_HEADERS *.h)
 | 
			
		||||
 | 
			
		||||
target_include_directories(wowlet PUBLIC
 | 
			
		||||
        ${CMAKE_BINARY_DIR}/src/feather_autogen/include
 | 
			
		||||
        ${CMAKE_BINARY_DIR}/src/wowlet_autogen/include
 | 
			
		||||
        ${CMAKE_SOURCE_DIR}/monero/include
 | 
			
		||||
        ${CMAKE_SOURCE_DIR}/monero/src
 | 
			
		||||
        ${CMAKE_SOURCE_DIR}/monero/external/easylogging++
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,7 +142,7 @@ AppContext::AppContext(QCommandLineParser *cmdargs) {
 | 
			
		|||
    this->walletManager = WalletManager::instance();
 | 
			
		||||
    QString logPath = QString("%1/daemon.log").arg(configDirectory);
 | 
			
		||||
    Monero::Utils::onStartup();
 | 
			
		||||
    Monero::Wallet::init("", "feather", logPath.toStdString(), true);
 | 
			
		||||
    Monero::Wallet::init("", "wowlet", logPath.toStdString(), true);
 | 
			
		||||
 | 
			
		||||
    bool logLevelFromEnv;
 | 
			
		||||
    int logLevel = qEnvironmentVariableIntValue("MONERO_LOG_LEVEL", &logLevelFromEnv);
 | 
			
		||||
| 
						 | 
				
			
			@ -444,7 +444,7 @@ void AppContext::onWSMessage(const QJsonObject &msg) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void AppContext::onWSNodes(const QJsonArray &nodes) {
 | 
			
		||||
    QList<QSharedPointer<FeatherNode>> l;
 | 
			
		||||
    QList<QSharedPointer<WowletNode>> l;
 | 
			
		||||
    for (auto &&entry: nodes) {
 | 
			
		||||
        auto obj = entry.toObject();
 | 
			
		||||
        auto nettype = obj.value("nettype");
 | 
			
		||||
| 
						 | 
				
			
			@ -463,12 +463,12 @@ void AppContext::onWSNodes(const QJsonArray &nodes) {
 | 
			
		|||
        if(type == "tor" && (!(this->isTails || this->isWhonix || this->isTorSocks)))
 | 
			
		||||
            continue;
 | 
			
		||||
 | 
			
		||||
        auto node = new FeatherNode(
 | 
			
		||||
        auto node = new WowletNode(
 | 
			
		||||
                obj.value("address").toString(),
 | 
			
		||||
                 obj.value("height").toInt(),
 | 
			
		||||
                 obj.value("target_height").toInt(),
 | 
			
		||||
                obj.value("online").toBool());
 | 
			
		||||
        QSharedPointer<FeatherNode> r = QSharedPointer<FeatherNode>(node);
 | 
			
		||||
        QSharedPointer<WowletNode> r = QSharedPointer<WowletNode>(node);
 | 
			
		||||
        l.append(r);
 | 
			
		||||
    }
 | 
			
		||||
    this->nodes->onWSNodesReceived(l);
 | 
			
		||||
| 
						 | 
				
			
			@ -536,7 +536,7 @@ void AppContext::createConfigDirectory(const QString &dir) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void AppContext::createWallet(FeatherSeed seed, const QString &path, const QString &password) {
 | 
			
		||||
void AppContext::createWallet(WowletSeed seed, const QString &path, const QString &password) {
 | 
			
		||||
    if(Utils::fileExists(path)) {
 | 
			
		||||
        auto err = QString("Failed to write wallet to path: \"%1\"; file already exists.").arg(path);
 | 
			
		||||
        qCritical() << err;
 | 
			
		||||
| 
						 | 
				
			
			@ -552,7 +552,7 @@ void AppContext::createWallet(FeatherSeed seed, const QString &path, const QStri
 | 
			
		|||
    Wallet *wallet = nullptr;
 | 
			
		||||
    if (seed.seedType == SeedType::TEVADOR) {
 | 
			
		||||
        wallet = this->walletManager->createDeterministicWalletFromSpendKey(path, password, seed.language, this->networkType, seed.spendKey, seed.restoreHeight, this->kdfRounds);
 | 
			
		||||
        wallet->setCacheAttribute("feather.seed", seed.mnemonic.join(" "));
 | 
			
		||||
        wallet->setCacheAttribute("wowlet.seed", seed.mnemonic.join(" "));
 | 
			
		||||
    }
 | 
			
		||||
    if (seed.seedType == SeedType::MONERO) {
 | 
			
		||||
        wallet = this->walletManager->recoveryWallet(path, password, seed.mnemonic.join(" "), "", this->networkType, seed.restoreHeight, this->kdfRounds);
 | 
			
		||||
| 
						 | 
				
			
			@ -614,7 +614,7 @@ void AppContext::initRestoreHeights() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void AppContext::onSetRestoreHeight(quint64 height){
 | 
			
		||||
    auto seed = this->currentWallet->getCacheAttribute("feather.seed");
 | 
			
		||||
    auto seed = this->currentWallet->getCacheAttribute("wowlet.seed");
 | 
			
		||||
    if(!seed.isEmpty()) {
 | 
			
		||||
        const auto msg = "This wallet has a 14 word mnemonic seed which has the restore height embedded.";
 | 
			
		||||
        emit setRestoreHeightError(msg);
 | 
			
		||||
| 
						 | 
				
			
			@ -811,7 +811,7 @@ void AppContext::onTransactionCommitted(bool status, PendingTransaction *tx, con
 | 
			
		|||
 | 
			
		||||
    emit transactionCommitted(status, tx, txid);
 | 
			
		||||
 | 
			
		||||
    // this tx was a donation to Feather, stop our nagging
 | 
			
		||||
    // this tx was a donation to WOWlet, stop our nagging
 | 
			
		||||
    if(this->donationSending) {
 | 
			
		||||
        this->donationSending = false;
 | 
			
		||||
        config()->set(Config::donateBeg, -1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_APPCONTEXT_H
 | 
			
		||||
#define FEATHER_APPCONTEXT_H
 | 
			
		||||
#ifndef WOWLET_APPCONTEXT_H
 | 
			
		||||
#define WOWLET_APPCONTEXT_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QProcess>
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +17,7 @@
 | 
			
		|||
#include "utils/xmrig.h"
 | 
			
		||||
#include "utils/wsclient.h"
 | 
			
		||||
#include "utils/txfiathistory.h"
 | 
			
		||||
#include "utils/FeatherSeed.h"
 | 
			
		||||
#include "utils/WowletSeed.h"
 | 
			
		||||
#include "widgets/RedditPost.h"
 | 
			
		||||
#include "widgets/CCSEntry.h"
 | 
			
		||||
#include "utils/RestoreHeightLookup.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ public:
 | 
			
		|||
    bool refreshed = false;
 | 
			
		||||
    WalletManager *walletManager;
 | 
			
		||||
    Wallet *currentWallet = nullptr;
 | 
			
		||||
    void createWallet(FeatherSeed seed, const QString &path, const QString &password);
 | 
			
		||||
    void createWallet(WowletSeed seed, const QString &path, const QString &password);
 | 
			
		||||
    void createWalletViewOnly(const QString &path, const QString &password, const QString &address, const QString &viewkey, const QString &spendkey, quint64 restoreHeight);
 | 
			
		||||
    void createWalletFinish(const QString &password);
 | 
			
		||||
    void syncStatusUpdated(quint64 height, quint64 target);
 | 
			
		||||
| 
						 | 
				
			
			@ -166,12 +166,12 @@ signals:
 | 
			
		|||
    void createTransactionCancelled(const QVector<QString> &address, double amount);
 | 
			
		||||
    void createTransactionSuccess(PendingTransaction *tx, const QVector<QString> &address);
 | 
			
		||||
    void redditUpdated(QList<QSharedPointer<RedditPost>> &posts);
 | 
			
		||||
    void nodesUpdated(QList<QSharedPointer<FeatherNode>> &nodes);
 | 
			
		||||
    void nodesUpdated(QList<QSharedPointer<WowletNode>> &nodes);
 | 
			
		||||
    void ccsUpdated(QList<QSharedPointer<CCSEntry>> &entries);
 | 
			
		||||
    void suchWowUpdated(const QJsonArray &such_data);
 | 
			
		||||
    void nodeSourceChanged(NodeSource nodeSource);
 | 
			
		||||
    void XMRigDownloads(const QJsonObject &data);
 | 
			
		||||
    void setCustomNodes(QList<FeatherNode> nodes);
 | 
			
		||||
    void setCustomNodes(QList<WowletNode> nodes);
 | 
			
		||||
    void openAliasResolveError(const QString &msg);
 | 
			
		||||
    void openAliasResolved(const QString &address, const QString &openAlias);
 | 
			
		||||
    void setRestoreHeightError(const QString &msg);
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +186,8 @@ private:
 | 
			
		|||
    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
			
		||||
    const int m_donationBoundary = 15;
 | 
			
		||||
    QTimer m_storeTimer;
 | 
			
		||||
    // @TODO: Replace url
 | 
			
		||||
    QUrl m_wsUrl = QUrl(QStringLiteral("ws://feathercitimllbmdktu6cmjo3fizgmyfrntntqzu6xguqa2rlq5cgid.onion/ws"));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_APPCONTEXT_H
 | 
			
		||||
#endif //WOWLET_APPCONTEXT_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
WOWlet <feather_version> (<feather_git_head>)
 | 
			
		||||
WOWlet <wowlet_version> (<wowlet_git_head>)
 | 
			
		||||
 | 
			
		||||
Website: https://wownero.org
 | 
			
		||||
E-mail: dev@wownero.org
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CLI_H
 | 
			
		||||
#define FEATHER_CLI_H
 | 
			
		||||
#ifndef WOWLET_CLI_H
 | 
			
		||||
#define WOWLET_CLI_H
 | 
			
		||||
 | 
			
		||||
#include <QtCore>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -46,4 +46,4 @@ signals:
 | 
			
		|||
    void closeApplication();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CLI_H
 | 
			
		||||
#endif //WOWLET_CLI_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COINSWIDGET_H
 | 
			
		||||
#define FEATHER_COINSWIDGET_H
 | 
			
		||||
#ifndef WOWLET_COINSWIDGET_H
 | 
			
		||||
#define WOWLET_COINSWIDGET_H
 | 
			
		||||
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
#include "model/CoinsModel.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -76,4 +76,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COINSWIDGET_H
 | 
			
		||||
#endif //WOWLET_COINSWIDGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								src/config-feather.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/config-feather.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
#ifndef WOWLET_VERSION_H
 | 
			
		||||
#define WOWLET_VERSION_H
 | 
			
		||||
 | 
			
		||||
#define WOWLET_VERSION "beta-1"
 | 
			
		||||
#define WOWLET_BRANCH "fd09b8875"
 | 
			
		||||
 | 
			
		||||
#define MONERO_VERSION "v0.9.0.2"
 | 
			
		||||
#define MONERO_BRANCH "f611d5c9e"
 | 
			
		||||
 | 
			
		||||
#define TOR_VERSION ""
 | 
			
		||||
 | 
			
		||||
#endif //WOWLET_VERSION_H
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
#define FEATHER_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
#ifndef WOWLET_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
#define WOWLET_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -27,4 +27,4 @@ private:
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
#endif //WOWLET_WALLETCACHEDEBUGDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
#include "aboutdialog.h"
 | 
			
		||||
#include "ui_aboutdialog.h"
 | 
			
		||||
#include "utils/utils.h"
 | 
			
		||||
#include "config-feather.h"
 | 
			
		||||
#include "config-wowlet.h"
 | 
			
		||||
 | 
			
		||||
AboutDialog::AboutDialog(QWidget *parent)
 | 
			
		||||
        : QDialog(parent)
 | 
			
		||||
| 
						 | 
				
			
			@ -17,8 +17,8 @@ AboutDialog::AboutDialog(QWidget *parent)
 | 
			
		|||
    ui->aboutImage->setPixmap(p.scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation));
 | 
			
		||||
    auto about = Utils::fileOpenQRC(":assets/about.txt");
 | 
			
		||||
    auto about_text = Utils::barrayToString(about);
 | 
			
		||||
    about_text = about_text.replace("<feather_version>", FEATHER_VERSION);
 | 
			
		||||
    about_text = about_text.replace("<feather_git_head>", FEATHER_BRANCH);
 | 
			
		||||
    about_text = about_text.replace("<wowlet_version>", WOWLET_VERSION);
 | 
			
		||||
    about_text = about_text.replace("<wowlet_git_head>", WOWLET_BRANCH);
 | 
			
		||||
    about_text = about_text.replace("<current_year>", QString::number(QDate::currentDate().year()));
 | 
			
		||||
    ui->copyrightText->setPlainText(about_text);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
     <property name="currentIndex">
 | 
			
		||||
      <number>0</number>
 | 
			
		||||
     </property>
 | 
			
		||||
     <widget class="QWidget" name="Feather">
 | 
			
		||||
     <widget class="QWidget" name="WOWlet">
 | 
			
		||||
      <attribute name="title">
 | 
			
		||||
       <string>WOWlet</string>
 | 
			
		||||
      </attribute>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_BALANCEDIALOG_H
 | 
			
		||||
#define FEATHER_BALANCEDIALOG_H
 | 
			
		||||
#ifndef WOWLET_BALANCEDIALOG_H
 | 
			
		||||
#define WOWLET_BALANCEDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,4 +24,4 @@ private:
 | 
			
		|||
    Ui::BalanceDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_BALANCEDIALOG_H
 | 
			
		||||
#endif //WOWLET_BALANCEDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_BROADCASTTXDIALOG_H
 | 
			
		||||
#define FEATHER_BROADCASTTXDIALOG_H
 | 
			
		||||
#ifndef WOWLET_BROADCASTTXDIALOG_H
 | 
			
		||||
#define WOWLET_BROADCASTTXDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -32,4 +32,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_BROADCASTTXDIALOG_H
 | 
			
		||||
#endif //WOWLET_BROADCASTTXDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CONTACTSDIALOG_H
 | 
			
		||||
#define FEATHER_CONTACTSDIALOG_H
 | 
			
		||||
#ifndef WOWLET_CONTACTSDIALOG_H
 | 
			
		||||
#define WOWLET_CONTACTSDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -28,4 +28,4 @@ private:
 | 
			
		|||
    QString m_name;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CONTACTSDIALOG_H
 | 
			
		||||
#endif //WOWLET_CONTACTSDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
 | 
			
		||||
#include "debuginfodialog.h"
 | 
			
		||||
#include "ui_debuginfodialog.h"
 | 
			
		||||
#include "config-feather.h"
 | 
			
		||||
#include "config-wowlet.h"
 | 
			
		||||
 | 
			
		||||
DebugInfoDialog::DebugInfoDialog(AppContext *ctx, QWidget *parent)
 | 
			
		||||
        : QDialog(parent)
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ void DebugInfoDialog::updateInfo() {
 | 
			
		|||
    else
 | 
			
		||||
        torStatus = "Unknown";
 | 
			
		||||
 | 
			
		||||
    ui->label_featherVersion->setText(QString("%1-%2").arg(FEATHER_VERSION, FEATHER_BRANCH));
 | 
			
		||||
    ui->label_wowletVersion->setText(QString("%1-%2").arg(WOWLET_VERSION, WOWLET_BRANCH));
 | 
			
		||||
    ui->label_moneroVersion->setText(QString("%1-%2").arg(MONERO_VERSION, MONERO_BRANCH));
 | 
			
		||||
 | 
			
		||||
    ui->label_walletHeight->setText(QString::number(m_ctx->currentWallet->blockChainHeight()));
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ void DebugInfoDialog::updateInfo() {
 | 
			
		|||
    ui->label_websocketStatus->setText(Utils::QtEnumToString(m_ctx->ws->webSocket.state()).remove("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_seedType->setText(m_ctx->currentWallet->getCacheAttribute("wowlet.seed").isEmpty() ? "25 word" : "14 word");
 | 
			
		||||
    ui->label_viewOnly->setText(m_ctx->currentWallet->viewOnly() ? "True" : "False");
 | 
			
		||||
    ui->label_primaryOnly->setText(m_ctx->currentWallet->balance(0) == m_ctx->currentWallet->balanceAll() ? "True" : "False");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +89,7 @@ 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("WOWlet version: %1  \n").arg(ui->label_featherVersion->text());
 | 
			
		||||
    text += QString("WOWlet version: %1  \n").arg(ui->label_wowletVersion->text());
 | 
			
		||||
    text += QString("Wownero version: %1  \n").arg(ui->label_moneroVersion->text());
 | 
			
		||||
 | 
			
		||||
    text += QString("Wallet height: %1  \n").arg(ui->label_walletHeight->text());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_DEBUGINFODIALOG_H
 | 
			
		||||
#define FEATHER_DEBUGINFODIALOG_H
 | 
			
		||||
#ifndef WOWLET_DEBUGINFODIALOG_H
 | 
			
		||||
#define WOWLET_DEBUGINFODIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -31,4 +31,4 @@ private:
 | 
			
		|||
    Ui::DebugInfoDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_DEBUGINFODIALOG_H
 | 
			
		||||
#endif //WOWLET_DEBUGINFODIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item row="0" column="1">
 | 
			
		||||
      <widget class="QLabel" name="label_featherVersion">
 | 
			
		||||
      <widget class="QLabel" name="label_wowletVersion">
 | 
			
		||||
       <property name="text">
 | 
			
		||||
        <string>TextLabel</string>
 | 
			
		||||
       </property>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_KEYSDIALOG_H
 | 
			
		||||
#define FEATHER_KEYSDIALOG_H
 | 
			
		||||
#ifndef WOWLET_KEYSDIALOG_H
 | 
			
		||||
#define WOWLET_KEYSDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -24,4 +24,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_KEYSDIALOG_H
 | 
			
		||||
#endif //WOWLET_KEYSDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_OUTPUTINFODIALOG_H
 | 
			
		||||
#define FEATHER_OUTPUTINFODIALOG_H
 | 
			
		||||
#ifndef WOWLET_OUTPUTINFODIALOG_H
 | 
			
		||||
#define WOWLET_OUTPUTINFODIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/Coins.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_OUTPUTINFODIALOG_H
 | 
			
		||||
#endif //WOWLET_OUTPUTINFODIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
#define FEATHER_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
#ifndef WOWLET_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
#define WOWLET_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,4 +31,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
#endif //WOWLET_OUTPUTSWEEPDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
#define FEATHER_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
#ifndef WOWLET_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
#define WOWLET_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -27,4 +27,4 @@ private:
 | 
			
		|||
    void setPassword();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
#endif //WOWLET_PASSWORDCHANGEDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_PASSWORDDIALOG_H
 | 
			
		||||
#define FEATHER_PASSWORDDIALOG_H
 | 
			
		||||
#ifndef WOWLET_PASSWORDDIALOG_H
 | 
			
		||||
#define WOWLET_PASSWORDDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,4 +24,4 @@ private:
 | 
			
		|||
    Ui::PasswordDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_PASSWORDDIALOG_H
 | 
			
		||||
#endif //WOWLET_PASSWORDDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_QRCODEDIALOG_H
 | 
			
		||||
#define FEATHER_QRCODEDIALOG_H
 | 
			
		||||
#ifndef WOWLET_QRCODEDIALOG_H
 | 
			
		||||
#define WOWLET_QRCODEDIALOG_H
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
#include "qrcode/QrCode.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -29,4 +29,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_QRCODEDIALOG_H
 | 
			
		||||
#endif //WOWLET_QRCODEDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ SeedDialog::SeedDialog(Wallet *wallet, QWidget *parent)
 | 
			
		|||
 | 
			
		||||
    ui->label_restoreHeight->setText(QString::number(wallet->getWalletCreationHeight()));
 | 
			
		||||
 | 
			
		||||
    QString seed_14_words = wallet->getCacheAttribute("feather.seed");
 | 
			
		||||
    QString seed_14_words = wallet->getCacheAttribute("wowlet.seed");
 | 
			
		||||
    QString seed_25_words = wallet->getSeed();
 | 
			
		||||
 | 
			
		||||
    if (seed_14_words.isEmpty()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_SEEDDIALOG_H
 | 
			
		||||
#define FEATHER_SEEDDIALOG_H
 | 
			
		||||
#ifndef WOWLET_SEEDDIALOG_H
 | 
			
		||||
#define WOWLET_SEEDDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -26,4 +26,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_SEEDDIALOG_H
 | 
			
		||||
#endif //WOWLET_SEEDDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_SIGNVERIFYDIALOG_H
 | 
			
		||||
#define FEATHER_SIGNVERIFYDIALOG_H
 | 
			
		||||
#ifndef WOWLET_SIGNVERIFYDIALOG_H
 | 
			
		||||
#define WOWLET_SIGNVERIFYDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +30,4 @@ private slots:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_SIGNVERIFYDIALOG_H
 | 
			
		||||
#endif //WOWLET_SIGNVERIFYDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TORINFODIALOG_H
 | 
			
		||||
#define FEATHER_TORINFODIALOG_H
 | 
			
		||||
#ifndef WOWLET_TORINFODIALOG_H
 | 
			
		||||
#define WOWLET_TORINFODIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,4 +29,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TORINFODIALOG_H
 | 
			
		||||
#endif //WOWLET_TORINFODIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TRANSACTIONINFODIALOG_H
 | 
			
		||||
#define FEATHER_TRANSACTIONINFODIALOG_H
 | 
			
		||||
#ifndef WOWLET_TRANSACTIONINFODIALOG_H
 | 
			
		||||
#define WOWLET_TRANSACTIONINFODIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include <QTextCharFormat>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,4 +35,4 @@ private:
 | 
			
		|||
    QString m_txKey;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TRANSACTIONINFODIALOG_H
 | 
			
		||||
#endif //WOWLET_TRANSACTIONINFODIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TXCONFADVDIALOG_H
 | 
			
		||||
#define FEATHER_TXCONFADVDIALOG_H
 | 
			
		||||
#ifndef WOWLET_TXCONFADVDIALOG_H
 | 
			
		||||
#define WOWLET_TXCONFADVDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include <QStandardItemModel>
 | 
			
		||||
| 
						 | 
				
			
			@ -50,4 +50,4 @@ private:
 | 
			
		|||
    QMenu *m_exportSignedMenu;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TXCONFADVDIALOG_H
 | 
			
		||||
#endif //WOWLET_TXCONFADVDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TXCONFDIALOG_H
 | 
			
		||||
#define FEATHER_TXCONFDIALOG_H
 | 
			
		||||
#ifndef WOWLET_TXCONFDIALOG_H
 | 
			
		||||
#define WOWLET_TXCONFDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/PendingTransaction.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -33,4 +33,4 @@ private:
 | 
			
		|||
    QString m_description;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TXCONFDIALOG_H
 | 
			
		||||
#endif //WOWLET_TXCONFDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TXIMPORTDIALOG_H
 | 
			
		||||
#define FEATHER_TXIMPORTDIALOG_H
 | 
			
		||||
#ifndef WOWLET_TXIMPORTDIALOG_H
 | 
			
		||||
#define WOWLET_TXIMPORTDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -36,4 +36,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TXIMPORTDIALOG_H
 | 
			
		||||
#endif //WOWLET_TXIMPORTDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_VERIFYPROOFDIALOG_H
 | 
			
		||||
#define FEATHER_VERIFYPROOFDIALOG_H
 | 
			
		||||
#ifndef WOWLET_VERIFYPROOFDIALOG_H
 | 
			
		||||
#define WOWLET_VERIFYPROOFDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -32,4 +32,4 @@ private:
 | 
			
		|||
    Wallet *m_wallet;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_VERIFYPROOFDIALOG_H
 | 
			
		||||
#endif //WOWLET_VERIFYPROOFDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_VIEWONLYDIALOG_H
 | 
			
		||||
#define FEATHER_VIEWONLYDIALOG_H
 | 
			
		||||
#ifndef WOWLET_VIEWONLYDIALOG_H
 | 
			
		||||
#define WOWLET_VIEWONLYDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -29,4 +29,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_KEYSDIALOG_H
 | 
			
		||||
#endif //WOWLET_KEYSDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ WalletInfoDialog::WalletInfoDialog(AppContext *ctx, QWidget *parent)
 | 
			
		|||
 | 
			
		||||
    ui->label_walletName->setText(keys.fileName().replace(".keys", ""));
 | 
			
		||||
    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_seedType->setText(ctx->currentWallet->getCacheAttribute("wowlet.seed").isEmpty() ? "25 word" : "14 word");
 | 
			
		||||
    ui->label_viewOnly->setText(ctx->currentWallet->viewOnly() ? "True" : "False");
 | 
			
		||||
    ui->label_path->setText(ctx->walletPath);
 | 
			
		||||
    ui->label_cacheSize->setText(QString("%1 MB").arg(QString::number(cache.size() / 1e6, 'f', 2)));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_WALLETINFODIALOG_H
 | 
			
		||||
#define FEATHER_WALLETINFODIALOG_H
 | 
			
		||||
#ifndef WOWLET_WALLETINFODIALOG_H
 | 
			
		||||
#define WOWLET_WALLETINFODIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -27,4 +27,4 @@ private:
 | 
			
		|||
    AppContext *m_ctx;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_WALLETINFODIALOG_H
 | 
			
		||||
#endif //WOWLET_WALLETINFODIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_GLOBALS_H
 | 
			
		||||
#define FEATHER_GLOBALS_H
 | 
			
		||||
#ifndef WOWLET_GLOBALS_H
 | 
			
		||||
#define WOWLET_GLOBALS_H
 | 
			
		||||
 | 
			
		||||
#include <QtGlobal>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,4 +11,4 @@ namespace globals
 | 
			
		|||
    const qreal cdiv = 1e11;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_GLOBALS_H
 | 
			
		||||
#endif //WOWLET_GLOBALS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_HISTORYWIDGET_H
 | 
			
		||||
#define FEATHER_HISTORYWIDGET_H
 | 
			
		||||
#ifndef WOWLET_HISTORYWIDGET_H
 | 
			
		||||
#define WOWLET_HISTORYWIDGET_H
 | 
			
		||||
 | 
			
		||||
#include "model/TransactionHistoryModel.h"
 | 
			
		||||
#include "model/TransactionHistoryProxyModel.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -60,4 +60,4 @@ private:
 | 
			
		|||
    Wallet *m_wallet = nullptr;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_HISTORYWIDGET_H
 | 
			
		||||
#endif //WOWLET_HISTORYWIDGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2014-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_ADDRESSBOOKINFO_H
 | 
			
		||||
#define FEATHER_ADDRESSBOOKINFO_H
 | 
			
		||||
#ifndef WOWLET_ADDRESSBOOKINFO_H
 | 
			
		||||
#define WOWLET_ADDRESSBOOKINFO_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_ADDRESSBOOKINFO_H
 | 
			
		||||
#endif //WOWLET_ADDRESSBOOKINFO_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COINS_H
 | 
			
		||||
#define FEATHER_COINS_H
 | 
			
		||||
#ifndef WOWLET_COINS_H
 | 
			
		||||
#define WOWLET_COINS_H
 | 
			
		||||
 | 
			
		||||
#include <functional>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -49,4 +49,4 @@ private:
 | 
			
		|||
    mutable QList<CoinsInfo*> m_tinfo;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COINS_H
 | 
			
		||||
#endif //WOWLET_COINS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COINSINFO_H
 | 
			
		||||
#define FEATHER_COINSINFO_H
 | 
			
		||||
#ifndef WOWLET_COINSINFO_H
 | 
			
		||||
#define WOWLET_COINSINFO_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
| 
						 | 
				
			
			@ -88,4 +88,4 @@ private:
 | 
			
		|||
    bool m_coinbase;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COINSINFO_H
 | 
			
		||||
#endif //WOWLET_COINSINFO_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2014-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CONSTRUCTIONINFO_H
 | 
			
		||||
#define FEATHER_CONSTRUCTIONINFO_H
 | 
			
		||||
#ifndef WOWLET_CONSTRUCTIONINFO_H
 | 
			
		||||
#define WOWLET_CONSTRUCTIONINFO_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
| 
						 | 
				
			
			@ -43,4 +43,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CONSTRUCTIONINFO_H
 | 
			
		||||
#endif //WOWLET_CONSTRUCTIONINFO_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2014-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_INPUT_H
 | 
			
		||||
#define FEATHER_INPUT_H
 | 
			
		||||
#ifndef WOWLET_INPUT_H
 | 
			
		||||
#define WOWLET_INPUT_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
| 
						 | 
				
			
			@ -26,4 +26,4 @@ public:
 | 
			
		|||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_INPUT_H
 | 
			
		||||
#endif //WOWLET_INPUT_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2014-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
#define FEATHER_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
#ifndef WOWLET_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
#define WOWLET_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include "ConstructionInfo.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -43,4 +43,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
#endif //WOWLET_PENDINGTRANSACTIONINFO_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_RINGS_H
 | 
			
		||||
#define FEATHER_RINGS_H
 | 
			
		||||
#ifndef WOWLET_RINGS_H
 | 
			
		||||
#define WOWLET_RINGS_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,4 @@ public:
 | 
			
		|||
    std::vector<uint64_t> ringMembers() const { return m_ringMembers; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_RINGS_H
 | 
			
		||||
#endif //WOWLET_RINGS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ namespace {
 | 
			
		|||
    static const int DAEMON_BLOCKCHAIN_TARGET_HEIGHT_CACHE_TTL_SECONDS = 30;
 | 
			
		||||
    static const int WALLET_CONNECTION_STATUS_CACHE_TTL_SECONDS = 5;
 | 
			
		||||
 | 
			
		||||
    static constexpr char ATTRIBUTE_SUBADDRESS_ACCOUNT[] = "feather.subaddress_account";
 | 
			
		||||
    static constexpr char ATTRIBUTE_SUBADDRESS_ACCOUNT[] = "wowlet.subaddress_account";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Wallet::Wallet(QObject * parent)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
#include <QtCore>
 | 
			
		||||
#include <QtGui>
 | 
			
		||||
 | 
			
		||||
#include "config-feather.h"
 | 
			
		||||
#include "config-wowlet.h"
 | 
			
		||||
#include "mainwindow.h"
 | 
			
		||||
#include "cli.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +155,7 @@ if (AttachConsole(ATTACH_PARENT_PROCESS)) {
 | 
			
		|||
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 | 
			
		||||
    QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton);
 | 
			
		||||
    QApplication::setDesktopSettingsAware(true); // use system font
 | 
			
		||||
    QApplication::setApplicationVersion(FEATHER_VERSION);
 | 
			
		||||
    QApplication::setApplicationVersion(WOWLET_VERSION);
 | 
			
		||||
 | 
			
		||||
    QApplication app(argc, argv);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ if (AttachConsole(ATTACH_PARENT_PROCESS)) {
 | 
			
		|||
    if(!quiet) {
 | 
			
		||||
        QMap<QString, QString> info;
 | 
			
		||||
        info["Qt"] = QT_VERSION_STR;
 | 
			
		||||
        info["WOWlet"] = FEATHER_VERSION;
 | 
			
		||||
        info["WOWlet"] = WOWLET_VERSION;
 | 
			
		||||
        if (stagenet) info["Mode"] = "Stagenet";
 | 
			
		||||
        else if (testnet) info["Mode"] = "Testnet";
 | 
			
		||||
        else info["Mode"] = "Mainnet";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -328,7 +328,7 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) :
 | 
			
		|||
#ifdef Q_OS_MAC
 | 
			
		||||
    m_touchbar = new KDMacTouchBar(this);
 | 
			
		||||
    m_touchbarActionWelcome = new QAction(QIcon(":/assets/images/wowlet.png"), "Welcome to WOWlet!");
 | 
			
		||||
    m_touchbarWalletItems = {ui->actionSettings, ui->actionCalculator, ui->actionKeys, ui->actionDonate_to_Feather};
 | 
			
		||||
    m_touchbarWalletItems = {ui->actionSettings, ui->actionCalculator, ui->actionKeys, ui->actionDonate_to_Wowlet};
 | 
			
		||||
    m_touchbarWizardItems = {m_touchbarActionWelcome};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -480,7 +480,7 @@ void MainWindow::initMenu() {
 | 
			
		|||
 | 
			
		||||
    // About screen
 | 
			
		||||
    connect(ui->actionAbout, &QAction::triggered, this, &MainWindow::menuAboutClicked);
 | 
			
		||||
    connect(ui->actionDonate_to_Feather, &QAction::triggered, this, &MainWindow::donateButtonClicked);
 | 
			
		||||
    connect(ui->actionDonate_to_Wowlet, &QAction::triggered, this, &MainWindow::donateButtonClicked);
 | 
			
		||||
 | 
			
		||||
    // Close wallet
 | 
			
		||||
    connect(ui->actionClose, &QAction::triggered, this, &MainWindow::menuWalletCloseClicked);
 | 
			
		||||
| 
						 | 
				
			
			@ -876,7 +876,7 @@ void MainWindow::updatePasswordIcon() {
 | 
			
		|||
 | 
			
		||||
void MainWindow::showRestoreHeightDialog() {
 | 
			
		||||
    // settings custom restore height is only available for 25 word seeds
 | 
			
		||||
    auto seed = m_ctx->currentWallet->getCacheAttribute("feather.seed");
 | 
			
		||||
    auto seed = m_ctx->currentWallet->getCacheAttribute("wowlet.seed");
 | 
			
		||||
    if(!seed.isEmpty()) {
 | 
			
		||||
        const auto msg = "This wallet has a 14 word mnemonic seed which has the restore height embedded.";
 | 
			
		||||
        QMessageBox::warning(this, "Cannot set custom restore height", msg);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -429,7 +429,7 @@
 | 
			
		|||
    </property>
 | 
			
		||||
    <addaction name="actionAbout"/>
 | 
			
		||||
    <addaction name="actionOfficialWebsite"/>
 | 
			
		||||
    <addaction name="actionDonate_to_Feather"/>
 | 
			
		||||
    <addaction name="actionDonate_to_Wowlet"/>
 | 
			
		||||
    <addaction name="separator"/>
 | 
			
		||||
    <addaction name="actionReport_bug"/>
 | 
			
		||||
    <addaction name="actionShow_debug_info"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -504,7 +504,7 @@
 | 
			
		|||
    <string>Report bug</string>
 | 
			
		||||
   </property>
 | 
			
		||||
  </action>
 | 
			
		||||
  <action name="actionDonate_to_Feather">
 | 
			
		||||
  <action name="actionDonate_to_Wowlet">
 | 
			
		||||
   <property name="text">
 | 
			
		||||
    <string>Donate to WOWlet</string>
 | 
			
		||||
   </property>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
#define FEATHER_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
#ifndef WOWLET_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
#define WOWLET_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QSortFilterProxyModel>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,4 @@ private:
 | 
			
		|||
    QRegExp m_searchRegExp;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
#endif //WOWLET_ADDRESSBOOKPROXYMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CCSMODEL_H
 | 
			
		||||
#define FEATHER_CCSMODEL_H
 | 
			
		||||
#ifndef WOWLET_CCSMODEL_H
 | 
			
		||||
#define WOWLET_CCSMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QAbstractTableModel>
 | 
			
		||||
#include <QSharedPointer>
 | 
			
		||||
| 
						 | 
				
			
			@ -39,4 +39,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CCSMODEL_H
 | 
			
		||||
#endif //WOWLET_CCSMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COINSMODEL_H
 | 
			
		||||
#define FEATHER_COINSMODEL_H
 | 
			
		||||
#ifndef WOWLET_COINSMODEL_H
 | 
			
		||||
#define WOWLET_COINSMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <wallet/api/wallet2_api.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,4 +55,4 @@ private:
 | 
			
		|||
    QIcon m_eyeBlind;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COINSMODEL_H
 | 
			
		||||
#endif //WOWLET_COINSMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COINSPROXYMODEL_H
 | 
			
		||||
#define FEATHER_COINSPROXYMODEL_H
 | 
			
		||||
#ifndef WOWLET_COINSPROXYMODEL_H
 | 
			
		||||
#define WOWLET_COINSPROXYMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QSortFilterProxyModel>
 | 
			
		||||
#include "libwalletqt/Coins.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,4 @@ private:
 | 
			
		|||
    Coins *m_coins;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COINSPROXYMODEL_H
 | 
			
		||||
#endif //WOWLET_COINSPROXYMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_MODELUTILS_H
 | 
			
		||||
#define FEATHER_MODELUTILS_H
 | 
			
		||||
#ifndef WOWLET_MODELUTILS_H
 | 
			
		||||
#define WOWLET_MODELUTILS_H
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QModelIndex>
 | 
			
		||||
| 
						 | 
				
			
			@ -15,4 +15,4 @@ public:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_MODELUTILS_H
 | 
			
		||||
#endif //WOWLET_MODELUTILS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ void NodeModel::clear() {
 | 
			
		|||
    endResetModel();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NodeModel::updateNodes(const QList<FeatherNode> nodes) {
 | 
			
		||||
void NodeModel::updateNodes(const QList<WowletNode> nodes) {
 | 
			
		||||
    beginResetModel();
 | 
			
		||||
    m_nodes.clear();
 | 
			
		||||
    m_nodes = nodes;
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ QVariant NodeModel::data(const QModelIndex &index, int role) const {
 | 
			
		|||
    if (!index.isValid() || index.row() < 0 || index.row() >= m_nodes.count())
 | 
			
		||||
        return QVariant();
 | 
			
		||||
 | 
			
		||||
    FeatherNode node = m_nodes.at(index.row());
 | 
			
		||||
    WowletNode node = m_nodes.at(index.row());
 | 
			
		||||
 | 
			
		||||
    if(role == Qt::DisplayRole) {
 | 
			
		||||
        switch(index.column()) {
 | 
			
		||||
| 
						 | 
				
			
			@ -94,10 +94,10 @@ QVariant NodeModel::headerData(int section, Qt::Orientation orientation, int rol
 | 
			
		|||
    return QVariant();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FeatherNode NodeModel::node(int row) {
 | 
			
		||||
WowletNode NodeModel::node(int row) {
 | 
			
		||||
    if (row < 0 || row >= m_nodes.size()) {
 | 
			
		||||
        qCritical("%s: no reddit post for index %d", __FUNCTION__, row);
 | 
			
		||||
        return FeatherNode();
 | 
			
		||||
        return WowletNode();
 | 
			
		||||
    }
 | 
			
		||||
    return m_nodes.at(row);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,13 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_NODEMODEL_H
 | 
			
		||||
#define FEATHER_NODEMODEL_H
 | 
			
		||||
#ifndef WOWLET_NODEMODEL_H
 | 
			
		||||
#define WOWLET_NODEMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QAbstractTableModel>
 | 
			
		||||
#include <QIcon>
 | 
			
		||||
 | 
			
		||||
class FeatherNode;
 | 
			
		||||
class WowletNode;
 | 
			
		||||
 | 
			
		||||
class NodeModel : public QAbstractTableModel {
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
| 
						 | 
				
			
			@ -25,16 +25,16 @@ public:
 | 
			
		|||
    int columnCount(const QModelIndex &parent) const override;
 | 
			
		||||
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
 | 
			
		||||
    QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
 | 
			
		||||
    FeatherNode node(int row);
 | 
			
		||||
    WowletNode node(int row);
 | 
			
		||||
 | 
			
		||||
    void clear();
 | 
			
		||||
    void updateNodes(QList<FeatherNode> nodes);
 | 
			
		||||
    void updateNodes(QList<WowletNode> nodes);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QList<FeatherNode> m_nodes;
 | 
			
		||||
    QList<WowletNode> m_nodes;
 | 
			
		||||
    QIcon m_offline;
 | 
			
		||||
    QIcon m_online;
 | 
			
		||||
    int m_nodeSource;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_NODEMODEL_H
 | 
			
		||||
#endif //WOWLET_NODEMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_REDDITMODEL_H
 | 
			
		||||
#define FEATHER_REDDITMODEL_H
 | 
			
		||||
#ifndef WOWLET_REDDITMODEL_H
 | 
			
		||||
#define WOWLET_REDDITMODEL_H
 | 
			
		||||
 | 
			
		||||
#include <QAbstractTableModel>
 | 
			
		||||
#include <QSharedPointer>
 | 
			
		||||
| 
						 | 
				
			
			@ -38,4 +38,4 @@ private:
 | 
			
		|||
    QList<QSharedPointer<RedditPost>> m_posts;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_REDDITMODEL_H
 | 
			
		||||
#endif //WOWLET_REDDITMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
#define FEATHER_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
#ifndef WOWLET_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
#define WOWLET_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/Subaddress.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -35,4 +35,4 @@ private:
 | 
			
		|||
    bool m_hidePrimary;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
#endif //WOWLET_SUBADDRESSPROXYMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_SUBADDRESSVIEW_H
 | 
			
		||||
#define FEATHER_SUBADDRESSVIEW_H
 | 
			
		||||
#ifndef WOWLET_SUBADDRESSVIEW_H
 | 
			
		||||
#define WOWLET_SUBADDRESSVIEW_H
 | 
			
		||||
 | 
			
		||||
#include <QTreeView>
 | 
			
		||||
#include <QKeyEvent>
 | 
			
		||||
| 
						 | 
				
			
			@ -19,4 +19,4 @@ protected:
 | 
			
		|||
    void keyPressEvent(QKeyEvent *event);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_SUBADDRESSVIEW_H
 | 
			
		||||
#endif //WOWLET_SUBADDRESSVIEW_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
#define FEATHER_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
#ifndef WOWLET_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
#define WOWLET_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/TransactionHistory.h"
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +30,4 @@ private:
 | 
			
		|||
    QRegExp m_searchRegExp;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
#endif //WOWLET_TRANSACTIONHISTORYPROXYMODEL_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_RECEIVEWIDGET_H
 | 
			
		||||
#define FEATHER_RECEIVEWIDGET_H
 | 
			
		||||
#ifndef WOWLET_RECEIVEWIDGET_H
 | 
			
		||||
#define WOWLET_RECEIVEWIDGET_H
 | 
			
		||||
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
#include "qrcode/QrCode.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -59,4 +59,4 @@ private:
 | 
			
		|||
    void showQrCodeDialog();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_RECEIVEWIDGET_H
 | 
			
		||||
#endif //WOWLET_RECEIVEWIDGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ Settings::Settings(QWidget *parent) :
 | 
			
		|||
    // nodes
 | 
			
		||||
    ui->nodeWidget->setupUI(m_ctx);
 | 
			
		||||
    connect(ui->nodeWidget, &NodeWidget::nodeSourceChanged, m_ctx->nodes, &Nodes::onNodeSourceChanged);
 | 
			
		||||
    connect(ui->nodeWidget, &NodeWidget::connectToNode, m_ctx->nodes, QOverload<const FeatherNode&>::of(&Nodes::connectToNode));
 | 
			
		||||
    connect(ui->nodeWidget, &NodeWidget::connectToNode, m_ctx->nodes, QOverload<const WowletNode&>::of(&Nodes::connectToNode));
 | 
			
		||||
 | 
			
		||||
    // setup checkboxes
 | 
			
		||||
    ui->checkBox_externalLink->setChecked(config()->get(Config::warnOnExternalLink).toBool());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@
 | 
			
		|||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
// Copyright (c) 2012 thomasv@gitorious
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_COLORSCHEME_H
 | 
			
		||||
#define FEATHER_COLORSCHEME_H
 | 
			
		||||
#ifndef WOWLET_COLORSCHEME_H
 | 
			
		||||
#define WOWLET_COLORSCHEME_H
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QVector>
 | 
			
		||||
| 
						 | 
				
			
			@ -41,4 +41,4 @@ public:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_COLORSCHEME_H
 | 
			
		||||
#endif //WOWLET_COLORSCHEME_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
#define FEATHER_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
#ifndef WOWLET_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
#define WOWLET_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
| 
						 | 
				
			
			@ -73,4 +73,4 @@ struct RestoreHeightLookup {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
#endif //WOWLET_RESTOREHEIGHTLOOKUP_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
#ifndef FEATHER_FEATHERSEED_H
 | 
			
		||||
#define FEATHER_FEATHERSEED_H
 | 
			
		||||
#ifndef WOWLET_WOWLETSEED_H
 | 
			
		||||
#define WOWLET_WOWLETSEED_H
 | 
			
		||||
 | 
			
		||||
#include "libwalletqt/WalletManager.h"
 | 
			
		||||
#include "libwalletqt/Wallet.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ enum SeedType {
 | 
			
		|||
    TEVADOR     // 14 word seeds
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct FeatherSeed {
 | 
			
		||||
struct WowletSeed {
 | 
			
		||||
    QString coin;
 | 
			
		||||
    QString language;
 | 
			
		||||
    SeedType seedType;
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ struct FeatherSeed {
 | 
			
		|||
 | 
			
		||||
    QString errorString;
 | 
			
		||||
 | 
			
		||||
    explicit FeatherSeed(RestoreHeightLookup *lookup,
 | 
			
		||||
    explicit WowletSeed(RestoreHeightLookup *lookup,
 | 
			
		||||
                          const QString &coin = "monero",
 | 
			
		||||
                          const QString &language = "English",
 | 
			
		||||
                          const QStringList &mnemonic = {})
 | 
			
		||||
| 
						 | 
				
			
			@ -111,4 +111,4 @@ struct FeatherSeed {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_FEATHERSEED_H
 | 
			
		||||
#endif //WOWLET_WOWLETSEED_H
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_FPROCESS_H
 | 
			
		||||
#define FEATHER_FPROCESS_H
 | 
			
		||||
#ifndef WOWLET_FPROCESS_H
 | 
			
		||||
#define WOWLET_FPROCESS_H
 | 
			
		||||
 | 
			
		||||
#include <QProcess>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,4 +21,4 @@ protected:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_FPROCESS_H
 | 
			
		||||
#endif //WOWLET_FPROCESS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@
 | 
			
		|||
// Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_SETTINGS_H
 | 
			
		||||
#define FEATHER_SETTINGS_H
 | 
			
		||||
#ifndef WOWLET_SETTINGS_H
 | 
			
		||||
#define WOWLET_SETTINGS_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
| 
						 | 
				
			
			@ -78,4 +78,4 @@ inline Config* config()
 | 
			
		|||
    return Config::instance();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_SETTINGS_H
 | 
			
		||||
#endif //WOWLET_SETTINGS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_DAEMON_RPC_H
 | 
			
		||||
#define FEATHER_DAEMON_RPC_H
 | 
			
		||||
#ifndef WOWLET_DAEMON_RPC_H
 | 
			
		||||
#define WOWLET_DAEMON_RPC_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -48,4 +48,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_DAEMON_RPC_H
 | 
			
		||||
#endif //WOWLET_DAEMON_RPC_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_NETWORKING_H
 | 
			
		||||
#define FEATHER_NETWORKING_H
 | 
			
		||||
#ifndef WOWLET_NETWORKING_H
 | 
			
		||||
#define WOWLET_NETWORKING_H
 | 
			
		||||
 | 
			
		||||
#include <QRegExp>
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
| 
						 | 
				
			
			@ -38,4 +38,4 @@ private:
 | 
			
		|||
    QNetworkAccessManager *m_networkAccessManager;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_NETWORKING_H
 | 
			
		||||
#endif //WOWLET_NETWORKING_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ Nodes::Nodes(AppContext *ctx, QNetworkAccessManager *networkAccessManager, QObje
 | 
			
		|||
        QObject(parent),
 | 
			
		||||
        m_ctx(ctx),
 | 
			
		||||
        m_networkAccessManager(networkAccessManager),
 | 
			
		||||
        m_connection(FeatherNode()),
 | 
			
		||||
        m_connection(WowletNode()),
 | 
			
		||||
        modelWebsocket(new NodeModel(NodeSource::websocket, this)),
 | 
			
		||||
        modelCustom(new NodeModel(NodeSource::custom, this)) {
 | 
			
		||||
    this->loadConfig();
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ void Nodes::loadConfig() {
 | 
			
		|||
    // load custom nodes
 | 
			
		||||
    auto nodes = obj.value("custom").toArray();
 | 
			
		||||
    for (auto value: nodes) {
 | 
			
		||||
        auto customNode = FeatherNode(value.toString());
 | 
			
		||||
        auto customNode = WowletNode(value.toString());
 | 
			
		||||
        customNode.custom = true;
 | 
			
		||||
 | 
			
		||||
        if(m_connection == customNode) {
 | 
			
		||||
| 
						 | 
				
			
			@ -57,7 +57,7 @@ void Nodes::loadConfig() {
 | 
			
		|||
    // load cached websocket nodes
 | 
			
		||||
    auto ws = obj.value("ws").toArray();
 | 
			
		||||
    for (auto value: ws) {
 | 
			
		||||
        auto wsNode = FeatherNode(value.toString());
 | 
			
		||||
        auto wsNode = WowletNode(value.toString());
 | 
			
		||||
        wsNode.custom = false;
 | 
			
		||||
        wsNode.online = true;  // assume online
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ void Nodes::loadConfig() {
 | 
			
		|||
                nodes_list = nodes_json[netKey].toObject()["clearnet"].toArray();
 | 
			
		||||
            }
 | 
			
		||||
            for (auto node: nodes_list) {
 | 
			
		||||
                auto wsNode = FeatherNode(node.toString());
 | 
			
		||||
                auto wsNode = WowletNode(node.toString());
 | 
			
		||||
                wsNode.custom = false;
 | 
			
		||||
                wsNode.online = true;
 | 
			
		||||
                m_websocketNodes.append(wsNode);
 | 
			
		||||
| 
						 | 
				
			
			@ -134,7 +134,7 @@ void Nodes::connectToNode() {
 | 
			
		|||
    this->autoConnect(true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Nodes::connectToNode(const FeatherNode &node) {
 | 
			
		||||
void Nodes::connectToNode(const WowletNode &node) {
 | 
			
		||||
    if (node.address.isEmpty())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +169,7 @@ void Nodes::autoConnect(bool forceReconnect) {
 | 
			
		|||
 | 
			
		||||
    if (wsMode && !m_wsNodesReceived && m_websocketNodes.count() == 0) {
 | 
			
		||||
        // this situation should rarely occur due to the usage of the websocket node cache on startup.
 | 
			
		||||
        qInfo() << "Feather is in websocket connection mode but was not able to receive any nodes (yet).";
 | 
			
		||||
        qInfo() << "WOWlet is in websocket connection mode but was not able to receive any nodes (yet).";
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -200,9 +200,9 @@ void Nodes::autoConnect(bool forceReconnect) {
 | 
			
		|||
    this->updateModels();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FeatherNode Nodes::pickEligibleNode() {
 | 
			
		||||
WowletNode Nodes::pickEligibleNode() {
 | 
			
		||||
    // Pick a node at random to connect to
 | 
			
		||||
    auto rtn = FeatherNode();
 | 
			
		||||
    auto rtn = WowletNode();
 | 
			
		||||
    auto wsMode = (this->source() == NodeSource::websocket);
 | 
			
		||||
    auto nodes = wsMode ? m_websocketNodes : m_customNodes;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -224,7 +224,7 @@ FeatherNode Nodes::pickEligibleNode() {
 | 
			
		|||
    // Pick random eligible node
 | 
			
		||||
    int mode_height = this->modeHeight(nodes);
 | 
			
		||||
    for (int index : node_indeces) {
 | 
			
		||||
        const FeatherNode &node = nodes.at(index);
 | 
			
		||||
        const WowletNode &node = nodes.at(index);
 | 
			
		||||
 | 
			
		||||
        // This may fail to detect bad nodes if cached nodes are used
 | 
			
		||||
        // Todo: wait on websocket before connecting, only use cache if websocket is unavailable
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ FeatherNode Nodes::pickEligibleNode() {
 | 
			
		|||
    return rtn;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Nodes::onWSNodesReceived(const QList<QSharedPointer<FeatherNode>> &nodes) {
 | 
			
		||||
void Nodes::onWSNodesReceived(const QList<QSharedPointer<WowletNode>> &nodes) {
 | 
			
		||||
    m_websocketNodes.clear();
 | 
			
		||||
    m_wsNodesReceived = true;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -303,7 +303,7 @@ void Nodes::onNodeSourceChanged(NodeSource nodeSource) {
 | 
			
		|||
    this->autoConnect(true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Nodes::setCustomNodes(const QList<FeatherNode> &nodes) {
 | 
			
		||||
void Nodes::setCustomNodes(const QList<WowletNode> &nodes) {
 | 
			
		||||
    m_customNodes.clear();
 | 
			
		||||
    auto key = QString::number(m_ctx->networkType);
 | 
			
		||||
    auto obj = m_configJson.value(key).toObject();
 | 
			
		||||
| 
						 | 
				
			
			@ -329,7 +329,7 @@ void Nodes::updateModels() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Nodes::resetLocalState() {
 | 
			
		||||
    auto resetState = [this](QList<FeatherNode> *model){
 | 
			
		||||
    auto resetState = [this](QList<WowletNode> *model){
 | 
			
		||||
        for (auto&& node: *model) {
 | 
			
		||||
            node.isConnecting = false;
 | 
			
		||||
            node.isActive = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -372,11 +372,11 @@ void Nodes::WSNodeExhaustedWarning() {
 | 
			
		|||
    m_wsExhaustedWarningEmitted = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QList<FeatherNode> Nodes::customNodes() {
 | 
			
		||||
QList<WowletNode> Nodes::customNodes() {
 | 
			
		||||
    return m_customNodes;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FeatherNode Nodes::connection() {
 | 
			
		||||
WowletNode Nodes::connection() {
 | 
			
		||||
    return m_connection;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -384,7 +384,7 @@ NodeSource Nodes::source() {
 | 
			
		|||
    return m_source;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int Nodes::modeHeight(const QList<FeatherNode> &nodes) {
 | 
			
		||||
int Nodes::modeHeight(const QList<WowletNode> &nodes) {
 | 
			
		||||
    QVector<int> heights;
 | 
			
		||||
    for (const auto &node: nodes) {
 | 
			
		||||
        heights.push_back(node.height);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_NODES_H
 | 
			
		||||
#define FEATHER_NODES_H
 | 
			
		||||
#ifndef WOWLET_NODES_H
 | 
			
		||||
#define WOWLET_NODES_H
 | 
			
		||||
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
#include <QRegExp>
 | 
			
		||||
| 
						 | 
				
			
			@ -20,8 +20,8 @@ enum NodeSource {
 | 
			
		|||
    custom
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct FeatherNode {
 | 
			
		||||
    explicit FeatherNode(QString _address = "", int height = 0, int target_height = 0, bool online = false)
 | 
			
		||||
struct WowletNode {
 | 
			
		||||
    explicit WowletNode(QString _address = "", int height = 0, int target_height = 0, bool online = false)
 | 
			
		||||
            : height(height), target_height(target_height), online(online){
 | 
			
		||||
        // wonky ipv4/host parsing, should be fine(tm)(c).
 | 
			
		||||
        if(_address.isEmpty()) return;
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ struct FeatherNode {
 | 
			
		|||
        return QString("%1://%2/get_info").arg(this->isHttps ? "https": "http",this->full);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool operator == (const FeatherNode &other) const {
 | 
			
		||||
    bool operator == (const WowletNode &other) const {
 | 
			
		||||
        return this->full == other.full;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -87,18 +87,18 @@ public:
 | 
			
		|||
    void writeConfig();
 | 
			
		||||
 | 
			
		||||
    NodeSource source();
 | 
			
		||||
    FeatherNode connection();
 | 
			
		||||
    QList<FeatherNode> customNodes();
 | 
			
		||||
    WowletNode connection();
 | 
			
		||||
    QList<WowletNode> customNodes();
 | 
			
		||||
 | 
			
		||||
    NodeModel *modelWebsocket;
 | 
			
		||||
    NodeModel *modelCustom;
 | 
			
		||||
 | 
			
		||||
public slots:
 | 
			
		||||
    void connectToNode();
 | 
			
		||||
    void connectToNode(const FeatherNode &node);
 | 
			
		||||
    void onWSNodesReceived(const QList<QSharedPointer<FeatherNode>>& nodes);
 | 
			
		||||
    void connectToNode(const WowletNode &node);
 | 
			
		||||
    void onWSNodesReceived(const QList<QSharedPointer<WowletNode>>& nodes);
 | 
			
		||||
    void onNodeSourceChanged(NodeSource nodeSource);
 | 
			
		||||
    void setCustomNodes(const QList<FeatherNode>& nodes);
 | 
			
		||||
    void setCustomNodes(const QList<WowletNode>& nodes);
 | 
			
		||||
    void autoConnect(bool forceReconnect = false);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
| 
						 | 
				
			
			@ -114,24 +114,24 @@ private:
 | 
			
		|||
 | 
			
		||||
    QStringList m_recentFailures;
 | 
			
		||||
 | 
			
		||||
    QList<FeatherNode> m_customNodes;
 | 
			
		||||
    QList<FeatherNode> m_websocketNodes;
 | 
			
		||||
    QList<WowletNode> m_customNodes;
 | 
			
		||||
    QList<WowletNode> m_websocketNodes;
 | 
			
		||||
 | 
			
		||||
    FeatherNode m_connection;  // current active connection, if any
 | 
			
		||||
    WowletNode m_connection;  // current active connection, if any
 | 
			
		||||
 | 
			
		||||
    bool m_wsNodesReceived = false;
 | 
			
		||||
    bool m_wsExhaustedWarningEmitted = true;
 | 
			
		||||
    bool m_customExhaustedWarningEmitted = true;
 | 
			
		||||
    bool m_enableAutoconnect = true;
 | 
			
		||||
 | 
			
		||||
    FeatherNode pickEligibleNode();
 | 
			
		||||
    WowletNode pickEligibleNode();
 | 
			
		||||
 | 
			
		||||
    void updateModels();
 | 
			
		||||
    void resetLocalState();
 | 
			
		||||
    void exhausted();
 | 
			
		||||
    void WSNodeExhaustedWarning();
 | 
			
		||||
    void nodeExhaustedWarning();
 | 
			
		||||
    int modeHeight(const QList<FeatherNode> &nodes);
 | 
			
		||||
    int modeHeight(const QList<WowletNode> &nodes);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_NODES_H
 | 
			
		||||
#endif //WOWLET_NODES_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_PRICES_H
 | 
			
		||||
#define FEATHER_PRICES_H
 | 
			
		||||
#ifndef WOWLET_PRICES_H
 | 
			
		||||
#define WOWLET_PRICES_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QProcess>
 | 
			
		||||
| 
						 | 
				
			
			@ -39,4 +39,4 @@ signals:
 | 
			
		|||
    void cryptoPricesUpdated();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_PRICES_H
 | 
			
		||||
#endif //WOWLET_PRICES_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
#include "utils/utils.h"
 | 
			
		||||
#include "utils/tor.h"
 | 
			
		||||
#include "appcontext.h"
 | 
			
		||||
#include "config-feather.h"
 | 
			
		||||
#include "config-wowlet.h"
 | 
			
		||||
 | 
			
		||||
QString Tor::torHost = "127.0.0.1";
 | 
			
		||||
quint16 Tor::torPort = 9050;
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +116,7 @@ void Tor::start() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Tor::checkConnection() {
 | 
			
		||||
    // We might not be able to connect to localhost if torsocks is used to start feather
 | 
			
		||||
    // We might not be able to connect to localhost if torsocks is used to start wowlet
 | 
			
		||||
    if (m_ctx->isTorSocks)
 | 
			
		||||
        this->setConnectionState(true);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TOR_H
 | 
			
		||||
#define FEATHER_TOR_H
 | 
			
		||||
#ifndef WOWLET_TOR_H
 | 
			
		||||
#define WOWLET_TOR_H
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
| 
						 | 
				
			
			@ -112,4 +112,4 @@ private:
 | 
			
		|||
 | 
			
		||||
class AppContext;  // forward declaration
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TOR_H
 | 
			
		||||
#endif //WOWLET_TOR_H
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TXFIATHISTORY_H
 | 
			
		||||
#define FEATHER_TXFIATHISTORY_H
 | 
			
		||||
#ifndef WOWLET_TXFIATHISTORY_H
 | 
			
		||||
#define WOWLET_TXFIATHISTORY_H
 | 
			
		||||
 | 
			
		||||
class TxFiatHistory : public QObject {
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +30,4 @@ private:
 | 
			
		|||
    int m_genesis_timestamp;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TXFIATHISTORY_H
 | 
			
		||||
#endif //WOWLET_TXFIATHISTORY_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_UTILS_H
 | 
			
		||||
#define FEATHER_UTILS_H
 | 
			
		||||
#ifndef WOWLET_UTILS_H
 | 
			
		||||
#define WOWLET_UTILS_H
 | 
			
		||||
 | 
			
		||||
#include <QRegExp>
 | 
			
		||||
#include <QStandardItemModel>
 | 
			
		||||
| 
						 | 
				
			
			@ -86,4 +86,4 @@ public:
 | 
			
		|||
 | 
			
		||||
class AppContext;  // forward declaration
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_UTILS_H
 | 
			
		||||
#endif //WOWLET_UTILS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_WHONIX_H
 | 
			
		||||
#define FEATHER_WHONIX_H
 | 
			
		||||
#ifndef WOWLET_WHONIX_H
 | 
			
		||||
#define WOWLET_WHONIX_H
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -12,4 +12,4 @@ struct WhonixOS {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_WHONIX_H
 | 
			
		||||
#endif //WOWLET_WHONIX_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_XMRIG_H
 | 
			
		||||
#define FEATHER_XMRIG_H
 | 
			
		||||
#ifndef WOWLET_XMRIG_H
 | 
			
		||||
#define WOWLET_XMRIG_H
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
| 
						 | 
				
			
			@ -42,4 +42,4 @@ private:
 | 
			
		|||
    ChildProcess m_process;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_XMRIG_H
 | 
			
		||||
#endif //WOWLET_XMRIG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CCSENTRY_H
 | 
			
		||||
#define FEATHER_CCSENTRY_H
 | 
			
		||||
#ifndef WOWLET_CCSENTRY_H
 | 
			
		||||
#define WOWLET_CCSENTRY_H
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,4 +21,4 @@ struct CCSEntry {
 | 
			
		|||
    int contributions = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CCSENTRY_H
 | 
			
		||||
#endif //WOWLET_CCSENTRY_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@
 | 
			
		|||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
// Copyright (c) 2012 thomasv@gitorious
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_PAYTOEDIT_H
 | 
			
		||||
#define FEATHER_PAYTOEDIT_H
 | 
			
		||||
#ifndef WOWLET_PAYTOEDIT_H
 | 
			
		||||
#define WOWLET_PAYTOEDIT_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QPlainTextEdit>
 | 
			
		||||
| 
						 | 
				
			
			@ -67,4 +67,4 @@ private:
 | 
			
		|||
    QVector<PartialTxOutput> m_outputs;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_PAYTOEDIT_H
 | 
			
		||||
#endif //WOWLET_PAYTOEDIT_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_REDDITPOST_H
 | 
			
		||||
#define FEATHER_REDDITPOST_H
 | 
			
		||||
#ifndef WOWLET_REDDITPOST_H
 | 
			
		||||
#define WOWLET_REDDITPOST_H
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -16,4 +16,4 @@ struct RedditPost {
 | 
			
		|||
    int comments;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_REDDITPOST_H
 | 
			
		||||
#endif //WOWLET_REDDITPOST_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CSSPROGRESSDELEGATE_H
 | 
			
		||||
#define FEATHER_CSSPROGRESSDELEGATE_H
 | 
			
		||||
#ifndef WOWLET_CSSPROGRESSDELEGATE_H
 | 
			
		||||
#define WOWLET_CSSPROGRESSDELEGATE_H
 | 
			
		||||
 | 
			
		||||
#include <QStyledItemDelegate>
 | 
			
		||||
#include "model/CCSModel.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -20,4 +20,4 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CSSPROGRESSDELEGATE_H
 | 
			
		||||
#endif //WOWLET_CSSPROGRESSDELEGATE_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ NodeWidget::NodeWidget(QWidget *parent)
 | 
			
		|||
 | 
			
		||||
void NodeWidget::onShowWSContextMenu(const QPoint &pos) {
 | 
			
		||||
    m_activeView = ui->wsView;
 | 
			
		||||
    FeatherNode node = this->selectedNode();
 | 
			
		||||
    WowletNode node = this->selectedNode();
 | 
			
		||||
    if (node.full.isEmpty()) return;
 | 
			
		||||
 | 
			
		||||
    this->showContextMenu(pos, node);
 | 
			
		||||
| 
						 | 
				
			
			@ -57,13 +57,13 @@ void NodeWidget::onShowWSContextMenu(const QPoint &pos) {
 | 
			
		|||
 | 
			
		||||
void NodeWidget::onShowCustomContextMenu(const QPoint &pos) {
 | 
			
		||||
    m_activeView = ui->customView;
 | 
			
		||||
    FeatherNode node = this->selectedNode();
 | 
			
		||||
    WowletNode node = this->selectedNode();
 | 
			
		||||
    if (node.full.isEmpty()) return;
 | 
			
		||||
 | 
			
		||||
    this->showContextMenu(pos, node);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NodeWidget::showContextMenu(const QPoint &pos, const FeatherNode &node) {
 | 
			
		||||
void NodeWidget::showContextMenu(const QPoint &pos, const WowletNode &node) {
 | 
			
		||||
    QMenu menu(this);
 | 
			
		||||
 | 
			
		||||
    if (!node.isActive) {
 | 
			
		||||
| 
						 | 
				
			
			@ -86,27 +86,27 @@ void NodeWidget::onContextConnect() {
 | 
			
		|||
    else
 | 
			
		||||
        m_activeView = ui->wsView;
 | 
			
		||||
 | 
			
		||||
    FeatherNode node = this->selectedNode();
 | 
			
		||||
    WowletNode node = this->selectedNode();
 | 
			
		||||
    if (!node.full.isEmpty())
 | 
			
		||||
        emit connectToNode(node);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NodeWidget::onContextStatusURL() {
 | 
			
		||||
    FeatherNode node = this->selectedNode();
 | 
			
		||||
    WowletNode node = this->selectedNode();
 | 
			
		||||
    if (!node.full.isEmpty())
 | 
			
		||||
        Utils::externalLinkWarning(this, node.as_url());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NodeWidget::onContextNodeCopy() {
 | 
			
		||||
    FeatherNode node = this->selectedNode();
 | 
			
		||||
    WowletNode node = this->selectedNode();
 | 
			
		||||
    Utils::copyToClipboard(node.full);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FeatherNode NodeWidget::selectedNode() {
 | 
			
		||||
WowletNode NodeWidget::selectedNode() {
 | 
			
		||||
    QModelIndex index = m_activeView->currentIndex();
 | 
			
		||||
    if (!index.isValid()) return FeatherNode();
 | 
			
		||||
    if (!index.isValid()) return WowletNode();
 | 
			
		||||
 | 
			
		||||
    FeatherNode node;
 | 
			
		||||
    WowletNode node;
 | 
			
		||||
    if (m_activeView == ui->customView) {
 | 
			
		||||
        node = m_customModel->node(index.row());
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -118,10 +118,10 @@ FeatherNode NodeWidget::selectedNode() {
 | 
			
		|||
void NodeWidget::onContextCustomNodeRemove() {
 | 
			
		||||
    QModelIndex index = ui->customView->currentIndex();
 | 
			
		||||
    if (!index.isValid()) return;
 | 
			
		||||
    FeatherNode node = m_customModel->node(index.row());
 | 
			
		||||
    WowletNode node = m_customModel->node(index.row());
 | 
			
		||||
 | 
			
		||||
    auto nodes = m_ctx->nodes->customNodes();
 | 
			
		||||
    QMutableListIterator<FeatherNode> i(nodes);
 | 
			
		||||
    QMutableListIterator<WowletNode> i(nodes);
 | 
			
		||||
    while (i.hasNext())
 | 
			
		||||
        if (i.next() == node)
 | 
			
		||||
            i.remove();
 | 
			
		||||
| 
						 | 
				
			
			@ -141,14 +141,14 @@ void NodeWidget::onCustomAddClicked(){
 | 
			
		|||
    if (!ok || text.isEmpty())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    QList<FeatherNode> nodesList;
 | 
			
		||||
    QList<WowletNode> nodesList;
 | 
			
		||||
    auto newNodesList = text.split("\n");
 | 
			
		||||
    for(auto &newNodeText: newNodesList) {
 | 
			
		||||
        newNodeText = newNodeText.replace("\r", "").trimmed();
 | 
			
		||||
        if(newNodeText.isEmpty())
 | 
			
		||||
            continue;
 | 
			
		||||
 | 
			
		||||
        auto node = FeatherNode(newNodeText);
 | 
			
		||||
        auto node = WowletNode(newNodeText);
 | 
			
		||||
        node.custom = true;
 | 
			
		||||
        nodesList.append(node);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ private slots:
 | 
			
		|||
    void onContextNodeCopy();
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void connectToNode(FeatherNode node);
 | 
			
		||||
    void connectToNode(WowletNode node);
 | 
			
		||||
    void nodeSourceChanged(NodeSource nodeSource);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -56,8 +56,8 @@ private:
 | 
			
		|||
    QAction *m_contextActionOpenStatusURL;
 | 
			
		||||
    QAction *m_contextActionCopy;
 | 
			
		||||
 | 
			
		||||
    void showContextMenu(const QPoint &pos, const FeatherNode &node);
 | 
			
		||||
    FeatherNode selectedNode();
 | 
			
		||||
    void showContextMenu(const QPoint &pos, const WowletNode &node);
 | 
			
		||||
    WowletNode selectedNode();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // NODEWIDGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,6 +57,7 @@ signals:
 | 
			
		|||
    void thumbReceived(SuchWowPost *test);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    // @TODO: Replace url
 | 
			
		||||
    QString m_weburl = "http://feathercitimllbmdktu6cmjo3fizgmyfrntntqzu6xguqa2rlq5cgid.onion/suchwow";
 | 
			
		||||
    AppContext *m_ctx = nullptr;
 | 
			
		||||
    UtilsNetworking *m_networkThumb = nullptr;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_TXPROOFWIDGET_H
 | 
			
		||||
#define FEATHER_TXPROOFWIDGET_H
 | 
			
		||||
#ifndef WOWLET_TXPROOFWIDGET_H
 | 
			
		||||
#define WOWLET_TXPROOFWIDGET_H
 | 
			
		||||
 | 
			
		||||
#include <QWidget>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +30,4 @@ private:
 | 
			
		|||
    Wallet *m_wallet;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_TXPROOFWIDGET_H
 | 
			
		||||
#endif //WOWLET_TXPROOFWIDGET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,11 +83,11 @@ XMRigWidget::XMRigWidget(AppContext *ctx, QWidget *parent) :
 | 
			
		|||
 | 
			
		||||
    // username/password
 | 
			
		||||
    connect(ui->lineEdit_password, &QLineEdit::editingFinished, [=]() {
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("feather.xmrig_password", ui->lineEdit_password->text());
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("wowlet.xmrig_password", ui->lineEdit_password->text());
 | 
			
		||||
        m_ctx->storeWallet();
 | 
			
		||||
    });
 | 
			
		||||
    connect(ui->lineEdit_address, &QLineEdit::editingFinished, [=]() {
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("feather.xmrig_username", ui->lineEdit_address->text());
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("wowlet.xmrig_username", ui->lineEdit_address->text());
 | 
			
		||||
        m_ctx->storeWallet();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -104,17 +104,17 @@ void XMRigWidget::onWalletClosed() {
 | 
			
		|||
 | 
			
		||||
void XMRigWidget::onWalletOpened(Wallet *wallet){
 | 
			
		||||
    // Xmrig username
 | 
			
		||||
    auto username = m_ctx->currentWallet->getCacheAttribute("feather.xmrig_username");
 | 
			
		||||
    auto username = m_ctx->currentWallet->getCacheAttribute("wowlet.xmrig_username");
 | 
			
		||||
    if(!username.isEmpty())
 | 
			
		||||
        ui->lineEdit_address->setText(username);
 | 
			
		||||
 | 
			
		||||
    // Xmrig passwd
 | 
			
		||||
    auto password = m_ctx->currentWallet->getCacheAttribute("feather.xmrig_password");
 | 
			
		||||
    auto password = m_ctx->currentWallet->getCacheAttribute("wowlet.xmrig_password");
 | 
			
		||||
    if(!password.isEmpty()) {
 | 
			
		||||
        ui->lineEdit_password->setText(password);
 | 
			
		||||
    } else {
 | 
			
		||||
        ui->lineEdit_password->setText("featherwallet");
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("feather.xmrig_password", ui->lineEdit_password->text());
 | 
			
		||||
        ui->lineEdit_password->setText("wowlet");
 | 
			
		||||
        m_ctx->currentWallet->setCacheAttribute("wowlet.xmrig_password", ui->lineEdit_password->text());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -145,8 +145,8 @@ void XMRigWidget::onStartClicked() {
 | 
			
		|||
    xmrigPath = config()->get(Config::xmrigPath).toString();
 | 
			
		||||
 | 
			
		||||
    // username is receiving address usually
 | 
			
		||||
    auto username = m_ctx->currentWallet->getCacheAttribute("feather.xmrig_username");
 | 
			
		||||
    auto password = m_ctx->currentWallet->getCacheAttribute("feather.xmrig_password");
 | 
			
		||||
    auto username = m_ctx->currentWallet->getCacheAttribute("wowlet.xmrig_username");
 | 
			
		||||
    auto password = m_ctx->currentWallet->getCacheAttribute("wowlet.xmrig_password");
 | 
			
		||||
 | 
			
		||||
    if(username.isEmpty()) {
 | 
			
		||||
        QString err = "Please specify a receiving address on the Settings screen";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CREATEWALLET_H
 | 
			
		||||
#define FEATHER_CREATEWALLET_H
 | 
			
		||||
#ifndef WOWLET_CREATEWALLET_H
 | 
			
		||||
#define WOWLET_CREATEWALLET_H
 | 
			
		||||
 | 
			
		||||
#include <QLabel>
 | 
			
		||||
#include <QWizardPage>
 | 
			
		||||
| 
						 | 
				
			
			@ -35,4 +35,4 @@ private:
 | 
			
		|||
    bool validateWidgets();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CREATEWALLET_H
 | 
			
		||||
#endif //WOWLET_CREATEWALLET_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ void CreateWalletSeedPage::seedRoulette(int count) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void CreateWalletSeedPage::generateSeed() {
 | 
			
		||||
    FeatherSeed seed = FeatherSeed(m_ctx->restoreHeights[m_ctx->networkType], m_ctx->coinName, m_ctx->seedLanguage);
 | 
			
		||||
    WowletSeed seed = WowletSeed(m_ctx->restoreHeights[m_ctx->networkType], m_ctx->coinName, m_ctx->seedLanguage);
 | 
			
		||||
    m_mnemonic = seed.mnemonic.join(" ");
 | 
			
		||||
    m_restoreHeight = seed.restoreHeight;
 | 
			
		||||
    this->displaySeed(m_mnemonic);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_CREATEWALLETSEED_H
 | 
			
		||||
#define FEATHER_CREATEWALLETSEED_H
 | 
			
		||||
#ifndef WOWLET_CREATEWALLETSEED_H
 | 
			
		||||
#define WOWLET_CREATEWALLETSEED_H
 | 
			
		||||
 | 
			
		||||
#include <QLabel>
 | 
			
		||||
#include <QWizardPage>
 | 
			
		||||
| 
						 | 
				
			
			@ -47,4 +47,4 @@ private:
 | 
			
		|||
    int m_rouletteSpin = 15;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_CREATEWALLETSEED_H
 | 
			
		||||
#endif //WOWLET_CREATEWALLETSEED_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
// SPDX-License-Identifier: BSD-3-Clause
 | 
			
		||||
// Copyright (c) 2020-2021, The Monero Project.
 | 
			
		||||
 | 
			
		||||
#ifndef FEATHER_WIZARDMENU_H
 | 
			
		||||
#define FEATHER_WIZARDMENU_H
 | 
			
		||||
#ifndef WOWLET_WIZARDMENU_H
 | 
			
		||||
#define WOWLET_WIZARDMENU_H
 | 
			
		||||
 | 
			
		||||
#include <QLabel>
 | 
			
		||||
#include <QWizardPage>
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +30,4 @@ private:
 | 
			
		|||
    Ui::MenuPage *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //FEATHER_WIZARDMENU_H
 | 
			
		||||
#endif //WOWLET_WIZARDMENU_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue