diff --git a/README.md b/README.md index a08c25a..6260847 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -ZecWallet-lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash +Zecwallet-Lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash ## Compiling from source * ZecWallet is written in C++ 14, and can be compiled with g++/clang++/visual c++. @@ -8,13 +8,11 @@ ZecWallet-lite is z-Addr first, Sapling compatible wallet lightwallet for Zcash ### Building on Linux ``` -git clone https://github.com/adityapk/zecwallet-lite.git -cd zecwallet +git clone https://github.com/adityapk00/zecwallet-lite.git +cd zecwallet-lite /path/to/qt5/bin/qmake zecwallet-lite.pro CONFIG+=debug make -j$(nproc) -./zecwallet +./zecwallet-lite ``` -Right now, you'll also need to run `lightwalletd` on your local machine for Zecwallet to connect to. - -_PS: ZecWallet is NOT an official wallet, and is not affiliated with the Electric Coin Company in any way._ +_PS: Zecwallet-Lite is NOT an official wallet, and is not affiliated with the Electric Coin Company in any way._ diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 31b1de2..f5ae56d 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -11,4 +11,4 @@ crate-type = ["staticlib"] [dependencies] libc = "0.2.58" lazy_static = "1.4.0" -zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "92d3804a5c67ca7621b141518a1f72451ca6ff40" } +zecwalletlitelib = { git = "https://github.com/adityapk00/zecwallet-light-cli", rev = "fe82c0b43043867b6cc1ebc462cc7b42f91b1adf" } diff --git a/src/camount.cpp b/src/camount.cpp index c8cd723..1d50302 100644 --- a/src/camount.cpp +++ b/src/camount.cpp @@ -22,9 +22,12 @@ QString CAmount::toDecimalString() const { QString r = QString::number(wholePart); if (decimalPart > 0) { QString decimalPartStr = QString::number(decimalPart); - QString leadingZeros = QString("0").repeated(NUMPLACES - decimalPartStr.length()); + r = r + "." + decimalPartStr.rightJustified(NUMPLACES, '0'); - r = r + "." + leadingZeros + decimalPartStr; + // Trim tailing 0s + while (r.right(1) == "0") { + r = r.left(r.length() - 1); + } } return r; diff --git a/src/controller.cpp b/src/controller.cpp index 7063bf8..75c16e0 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -372,10 +372,13 @@ void Controller::refreshTransactions() { total_amount = total_amount + amount; } - if (items.length() == 1) { - address = items[0].address; - } else { - address = "(Multiple)"; + { + // Concat all the addresses + QList addresses; + for (auto item : items) { + addresses.push_back(item.address); + } + address = addresses.join(","); } txdata.push_back(TransactionItem{ diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 7164bb6..690f3d9 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -22,7 +22,7 @@ - 3 + 1 @@ -296,7 +296,7 @@ false - From + false diff --git a/src/txtablemodel.cpp b/src/txtablemodel.cpp index 04d50e3..9df59e4 100644 --- a/src/txtablemodel.cpp +++ b/src/txtablemodel.cpp @@ -69,10 +69,20 @@ bool TxTableModel::exportToCsv(QString fileName) const { return headers.size(); } +QString TxTableModel::concatMultipleMemos(const TransactionItem& dat) const { + // Concat all the memos + QString memo; + for (auto item : dat.items) { + if (!item.memo.trimmed().isEmpty()) { + memo += item.address + ": \"" + item.memo + "\"\n"; + } + } - QVariant TxTableModel::data(const QModelIndex &index, int role) const - { - // Align numeric columns (confirmations, amount) right + return memo; +}; + +QVariant TxTableModel::data(const QModelIndex &index, int role) const { + // Align numeric columns (confirmations, amount) right if (role == Qt::TextAlignmentRole && (index.column() == Column::Confirmations || index.column() == Column::Amount)) return QVariant(Qt::AlignRight | Qt::AlignVCenter); @@ -127,7 +137,7 @@ bool TxTableModel::exportToCsv(QString fileName) const { (memo.isEmpty() ? "" : " tx memo: \"" + memo + "\""); } } else { - return "Multiple"; + return concatMultipleMemos(dat); } } case Column::Address: { @@ -202,20 +212,8 @@ QString TxTableModel::getTxId(int row) const { QString TxTableModel::getMemo(int row) const { auto dat = modeldata->at(row); - bool hasMemo = false; - for (int i=0; i < dat.items.length(); i++) { - if (!dat.items[i].memo.isEmpty()) { - hasMemo = true; - } - } - - if (dat.items.length() == 1) { - return dat.items[0].memo; - } else if (hasMemo) { - return "(Multiple)"; - } else { - return ""; - } + + return concatMultipleMemos(dat); } qint64 TxTableModel::getConfirmations(int row) const { diff --git a/src/txtablemodel.h b/src/txtablemodel.h index 8e60ea7..b07b914 100644 --- a/src/txtablemodel.h +++ b/src/txtablemodel.h @@ -38,6 +38,8 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const; private: + QString concatMultipleMemos(const TransactionItem&) const; + QList* modeldata = nullptr; QList headers;