Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
833b8d1
governancemodel introduction
furszy May 12, 2021
6a2ffa9
governancemodel: add proposal status
furszy May 15, 2021
ce00bcd
GUI: Main governance screen introduced and navigation connected :).
furszy May 20, 2021
96c63cf
GUI: add styles for governance screens.
Neoperol May 20, 2021
d67a121
GUI: governance vote for proposal dialog introduced.
furszy May 20, 2021
feab444
GUI: governance vote for proposal dialog: masternode/s selection dial…
furszy May 20, 2021
61821eb
GUI: add mnselectiondialog styles.
Neoperol May 20, 2021
64dbc86
GUI: governance, introducing create proposal dialog + navigation conn…
furszy May 20, 2021
1123789
GUI: governance create proposal, connect field validations and error …
furszy May 21, 2021
0801c3c
Governance model: createAndSendProposalFeeTx method created.
furszy May 22, 2021
f8d112b
GUI: create proposal: summary page connected, proposal creation and a…
furszy May 22, 2021
a50276f
GUI: governancemodel load and schedule waiting for approval proposals…
furszy May 24, 2021
18ae037
GUI governance: calculate, cache and connect budget available and all…
furszy May 24, 2021
8e41aad
GUI vote dialog: connect MN selection dialog to the model.
furszy May 25, 2021
b5765b0
GUI vote dialog, present proposal info.
furszy May 25, 2021
c8bdeb7
GUI governance: emit vote for proposal connected.
furszy May 25, 2021
aa19716
GovernanceModel: implement getLocalMNsVotesForProposal to retrieve al…
furszy May 28, 2021
da39a13
wallet: encapsulate wtx extra values set.
furszy May 28, 2021
8cd50fe
gui: do not open vote dialog if the proposal wasn't accepted by the n…
furszy May 28, 2021
6c1ff96
GUI: vote dialog, connect already broadcasted votes.
furszy May 28, 2021
c952196
Model governance: do not try to broadcast proposals that expired or t…
furszy May 28, 2021
de13d6f
GUI governance: load the existent MNs votes in the mn selection dialog.
furszy May 28, 2021
0b3b3ec
GUI: governance, proposals filter combobox.
Neoperol May 28, 2021
77bdd2e
GUI: governance, dark theme style added
Neoperol May 29, 2021
bb08e44
active masternode do not stall if ACTIVE_MASTERNODE_NOT_CAPABLE was set.
furszy May 28, 2021
34a982c
GUI governance, refresh grid after vote.
furszy May 28, 2021
6603c10
GovernanceModel: Do not try to broadcast proposal whose fee tx is con…
furszy May 29, 2021
d18d265
GUI governance: add proposals filter
furszy May 29, 2021
ebb9c1f
GUI: proposal url copy to clipboard connected.
furszy May 29, 2021
8800a63
GUI: add checkbox disabled style.
furszy May 29, 2021
caa5b0a
GUI: improve create proposal dialog subtitles.
furszy May 29, 2021
ec99bae
GUI: improve proposalcard status
furszy May 29, 2021
2d15cd6
[GUI] dark theme mnselectiondialog.
Neoperol Jun 1, 2021
e189728
GUI: Governance model, add waiting proposal to the hasProposals() ret…
furszy Jun 8, 2021
b46621a
GUI: transactionrecord parse new wtx proposal fee comment format.
furszy Jun 8, 2021
debbed9
GUI: governancemodel fix zombie waiting proposals check.
furszy Jun 8, 2021
9b45f72
GUI: Add governance empty screen image for dark theme.
Neoperol Jun 14, 2021
dfaf084
GUI: add addresses selector to the proposal creation wizard.
furszy Jul 7, 2021
33b1b87
GUI: Create proposal dialog, implement months input field spinbox.
furszy Jul 24, 2021
37f7118
GUI: Add cs_proposals mutex lock in governancemodel FindProposal func…
furszy Aug 2, 2021
bf99df9
GUI: Reset governance total allocated amount
furszy Aug 7, 2021
cb73091
GUI: Add sync warning for governance screen.
furszy Aug 7, 2021
87beffe
GUI: accept only UTF-8 valid proposal names.
furszy Aug 7, 2021
427913e
GUI: Stop translating test strings in the .ui forms.
furszy Sep 4, 2021
2b11018
GUI: refactor GUIUtil::parseValue() to be used equally as `SendMultiR…
furszy Sep 8, 2021
b8f0ac6
Connect PROPOSAL_MIN_AMOUNT constant to gov model validatePropAmount(…
furszy Sep 8, 2021
51d799b
GUI create proposal: unify amount parsing using GUIUtil::parseValue().
furszy Sep 8, 2021
e264153
GUI: request unlock wallet before try to create a proposal
furszy Sep 9, 2021
889a720
GUI: Adjust proposal card months label text and the status label padd…
furszy Sep 9, 2021
559a095
GUI: governance widget, Add translations and generalize sort/filter c…
furszy Sep 9, 2021
702db9f
GUI governance: by default, do not show finished proposals that haven…
furszy Sep 13, 2021
bc01677
GUI: add proposal card menu.
furszy Sep 14, 2021
6c404df
GUI: Check time between MN votes and inform if it didn't pass the min…
furszy Sep 15, 2021
162d843
GUI: Implement and connect proposal information dialog.
furszy Sep 16, 2021
759036b
GUI: Create proposal dialog accepting decimal amounts.
furszy Sep 16, 2021
dae3767
GUI: Create proposal dialog, add key event and show event listeners.
furszy Sep 16, 2021
1a4acb2
GUI: Masternode creation wizard, set max MN name length.
furszy Sep 22, 2021
36461da
GUI: Vote for proposal, add previous votes information in the voters'…
furszy Sep 23, 2021
fccb4cc
GUI: vote for proposal, disable checkbox of MNs that will not be able…
furszy Sep 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion src/Makefile.qt.include
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ QT_FORMS_UI = \
qt/pivx/forms/addresseswidget.ui \
qt/pivx/forms/defaultdialog.ui \
qt/pivx/forms/coldstakingwidget.ui \
qt/pivx/forms/proposalcard.ui \
qt/pivx/forms/mnselectiondialog.ui \
qt/pivx/forms/votedialog.ui \
qt/pivx/forms/createproposaldialog.ui \
qt/pivx/forms/proposalinfodialog.ui \
qt/pivx/forms/governancewidget.ui \
qt/pivx/settings/forms/settingsbackupwallet.ui \
qt/pivx/settings/forms/settingsexportcsv.ui \
qt/pivx/settings/forms/settingsbittoolwidget.ui \
Expand Down Expand Up @@ -136,6 +142,12 @@ QT_MOC_CPP = \
qt/pivx/moc_addresseswidget.cpp \
qt/pivx/moc_defaultdialog.cpp \
qt/pivx/moc_coldstakingwidget.cpp \
qt/pivx/moc_proposalcard.cpp \
qt/pivx/moc_mnselectiondialog.cpp \
qt/pivx/moc_votedialog.cpp \
qt/pivx/moc_createproposaldialog.cpp \
qt/pivx/moc_proposalinfodialog.cpp \
qt/pivx/moc_governancewidget.cpp \
qt/pivx/settings/moc_settingsbackupwallet.cpp \
qt/pivx/settings/moc_settingsexportcsv.cpp \
qt/pivx/settings/moc_settingsbittoolwidget.cpp \
Expand Down Expand Up @@ -249,6 +261,13 @@ BITCOIN_QT_H = \
qt/pivx/addresseswidget.h \
qt/pivx/defaultdialog.h \
qt/pivx/coldstakingwidget.h \
qt/pivx/governancemodel.h \
qt/pivx/proposalcard.h \
qt/pivx/mnselectiondialog.h \
qt/pivx/votedialog.h \
qt/pivx/createproposaldialog.h \
qt/pivx/proposalinfodialog.h \
qt/pivx/governancewidget.h \
qt/pivx/settings/settingsbackupwallet.h \
qt/pivx/settings/settingsexportcsv.h \
qt/pivx/settings/settingsbittoolwidget.h \
Expand Down Expand Up @@ -485,7 +504,21 @@ RES_ICONS = \
qt/pivx/res/img/ic-information.svg \
qt/pivx/res/img/ic-information-hover.svg \
qt/pivx/res/img/ani-loading-dark.gif \
qt/pivx/res/img/ani-loading.gif
qt/pivx/res/img/ani-loading.gif \
qt/pivx/res/img/ic-check-vote.svg \
qt/pivx/res/img/ic-check-vote-active.svg \
qt/pivx/res/img/ic-check-vote-dark.svg \
qt/pivx/res/img/ic-check-vote-active-dark.svg \
qt/pivx/res/img/ic-check-block.svg \
qt/pivx/res/img/ic-filter.svg \
qt/pivx/res/img/ic-link.svg \
qt/pivx/res/img/ic-nav-governance.svg \
qt/pivx/res/img/ic-nav-governance-active.svg \
qt/pivx/res/img/ic-nav-governance-hover.svg \
qt/pivx/res/img/ic-time.svg \
qt/pivx/res/img/ic-link-hover.svg \
qt/pivx/res/img/img-empty-governance.svg \
qt/pivx/res/img/img-empty-dark-governance.svg

BITCOIN_QT_BASE_CPP = \
qt/bantablemodel.cpp \
Expand Down Expand Up @@ -569,6 +602,13 @@ BITCOIN_QT_WALLET_CPP = \
qt/pivx/addresseswidget.cpp \
qt/pivx/defaultdialog.cpp \
qt/pivx/coldstakingwidget.cpp \
qt/pivx/governancemodel.cpp \
qt/pivx/proposalcard.cpp \
qt/pivx/mnselectiondialog.cpp \
qt/pivx/votedialog.cpp \
qt/pivx/createproposaldialog.cpp \
qt/pivx/proposalinfodialog.cpp \
qt/pivx/governancewidget.cpp \
qt/pivx/settings/settingsbackupwallet.cpp \
qt/pivx/settings/settingsexportcsv.cpp \
qt/pivx/settings/settingsbittoolwidget.cpp \
Expand Down
2 changes: 1 addition & 1 deletion src/activemasternode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ void CActiveMasternode::ManageStatus()

if (status == ACTIVE_MASTERNODE_SYNC_IN_PROCESS) status = ACTIVE_MASTERNODE_INITIAL;

if (status == ACTIVE_MASTERNODE_INITIAL) {
if (status == ACTIVE_MASTERNODE_INITIAL || (pmn && status == ACTIVE_MASTERNODE_NOT_CAPABLE)) {
if (pmn) {
if (pmn->protocolVersion != PROTOCOL_VERSION) {
LogPrintf("%s: ERROR Trying to start a masternode running an old protocol version, "
Expand Down
3 changes: 3 additions & 0 deletions src/budget/budgetmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ class CBudgetManager : public CValidationInterface
// finds the proposal with the given name, with highest net yes count.
const CBudgetProposal* FindProposalByName(const std::string& strProposalName) const;

// Returns true if there is at least one proposal stored.
bool HasAnyProposal() const { return WITH_LOCK(cs_proposals, return !mapProposals.empty()); }

static CAmount GetTotalBudget(int nHeight);
std::vector<CBudgetProposal> GetBudget();
// Get all the budget proposals sorted by votes (highest to lowest)
Expand Down
2 changes: 1 addition & 1 deletion src/budget/budgetproposal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ int CBudgetProposal::GetTotalPaymentCount() const

int CBudgetProposal::GetRemainingPaymentCount(int nCurrentHeight) const
{
// If this budget starts in the future, this value will be wrong
// If the proposal is already finished (passed the end block cycle), the payments value will be negative
int nPayments = (GetBlockEndCycle() - GetBlockCycle(nCurrentHeight)) / Params().GetConsensus().nBudgetCycleBlocks - 1;
// Take the lowest value
return std::min(nPayments, GetTotalPaymentCount());
Expand Down
8 changes: 7 additions & 1 deletion src/budget/budgetproposal.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,11 @@ class CBudgetProposal
std::map<COutPoint, CBudgetVote> GetVotes() const { return mapVotes; }
int GetYeas() const { return GetVoteCount(CBudgetVote::VOTE_YES); }
int GetNays() const { return GetVoteCount(CBudgetVote::VOTE_NO); }
int GetAbstains() const { return GetVoteCount(CBudgetVote::VOTE_ABSTAIN); };
int GetAbstains() const { return GetVoteCount(CBudgetVote::VOTE_ABSTAIN); }
CAmount GetAmount() const { return nAmount; }
void SetAllotted(CAmount nAllottedIn) { nAllotted = nAllottedIn; }
CAmount GetAllotted() const { return nAllotted; }
void SetFeeTxHash(const uint256& txid) { nFeeTXHash = txid; }

uint256 GetHash() const
{
Expand Down Expand Up @@ -128,6 +129,11 @@ class CBudgetProposal
CDataStream GetBroadcast() const;
void Relay();

inline bool operator==(const CBudgetProposal& other) const
{
return GetHash() == other.GetHash();
}

// compare proposals by proposal hash
inline bool operator>(const CBudgetProposal& other) const
{
Expand Down
1 change: 1 addition & 0 deletions src/operationresult.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class OperationResult
OperationResult(bool _res) : m_res(_res) { }

std::string getError() const { return (m_error ? *m_error : ""); }
bool getRes() const { return m_res; }
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(b6b638d20cd752e35ea671ca16c742f1c1b32284)

Nit: As already discussed in #2453, we can remove getRes() and just explicitly cast to bool.

explicit operator bool() const { return m_res; }
};

Expand Down
7 changes: 7 additions & 0 deletions src/qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,12 @@ SET(QT_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/pivx/addresseswidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/defaultdialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/coldstakingwidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/mnselectiondialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/proposalcard.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/votedialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/createproposaldialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/proposalinfodialog.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/governancewidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/settings/settingsbackupwallet.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/settings/settingsbittoolwidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/settings/settingsconsolewidget.cpp
Expand All @@ -159,6 +165,7 @@ SET(QT_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/pivx/settings/settingswidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/welcomecontentwidget.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/splash.cpp
${CMAKE_CURRENT_SOURCE_DIR}/pivx/governancemodel.cpp
)

execute_process(
Expand Down
6 changes: 3 additions & 3 deletions src/qt/forms/coincontroldialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ padding-right:4px;</string>
<item>
<widget class="QLabel" name="labelCoinControlQuantity">
<property name="text">
<string>0</string>
<string notr="true">0</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -591,7 +591,7 @@ padding-right:4px;</string>
<item>
<widget class="QLabel" name="labelCoinControlBytes">
<property name="text">
<string>0</string>
<string notr="true">0</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -683,7 +683,7 @@ padding-right:4px;</string>
<item>
<widget class="QLabel" name="labelCoinControlChange">
<property name="text">
<string>0</string>
<string notr="true">0</string>
</property>
</widget>
</item>
Expand Down
12 changes: 11 additions & 1 deletion src/qt/guiutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ QFont bitcoinAddressFont()
* return validity.
* @note Must return 0 if !valid.
*/
CAmount parseValue(const QString& text, int displayUnit, bool* valid_out)
static CAmount parseValue(const QString& text, int displayUnit, bool* valid_out)
{
CAmount val = 0;
bool valid = BitcoinUnits::parse(displayUnit, text, &val);
Expand All @@ -107,6 +107,16 @@ CAmount parseValue(const QString& text, int displayUnit, bool* valid_out)
return valid ? val : 0;
}

/**
* Returns 0 if the value is invalid
*/
CAmount parseValue(const QString& amount, int displayUnit)
{
bool isValid = false;
CAmount value = GUIUtil::parseValue(amount, displayUnit, &isValid);
return isValid ? value : 0;
}

QString formatBalance(CAmount amount, int nDisplayUnit, bool isZpiv)
{
return (amount == 0) ? ("0.00 " + BitcoinUnits::name(nDisplayUnit, isZpiv)) : BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, amount, false, BitcoinUnits::separatorAlways, true, isZpiv);
Expand Down
5 changes: 3 additions & 2 deletions src/qt/guiutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@ QString dateTimeStr(qint64 nTime);
// Render PIVX addresses in monospace font
QFont bitcoinAddressFont();

// Parse string into a CAmount value
CAmount parseValue(const QString& text, int displayUnit, bool* valid_out = 0);
// Parse string into a CAmount value.
// Return 0 if the value is invalid
CAmount parseValue(const QString& amount, int displayUnit = 0);

// Format an amount
QString formatBalance(CAmount amount, int nDisplayUnit = 0, bool isZpiv = false);
Expand Down
15 changes: 13 additions & 2 deletions src/qt/pivx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
#include "winshutdownmonitor.h"

#ifdef ENABLE_WALLET
#include "qt/pivx/governancemodel.h"
#include "qt/pivx/mnmodel.h"
#include "paymentserver.h"
#include "walletmodel.h"
#include "interfaces/wallet.h"
Expand All @@ -41,8 +43,6 @@
#include "wallet/wallet.h"
#endif

#include <stdint.h>

#include <QApplication>
#include <QDebug>
#include <QLibraryInfo>
Expand Down Expand Up @@ -236,6 +236,8 @@ public Q_SLOTS:
#ifdef ENABLE_WALLET
PaymentServer* paymentServer{nullptr};
WalletModel* walletModel{nullptr};
GovernanceModel* govModel{nullptr};
MNModel* mnModel{nullptr};
#endif
int returnValue{0};
QTranslator qtTranslatorBase, qtTranslator, translatorBase, translator;
Expand Down Expand Up @@ -453,6 +455,7 @@ void BitcoinApplication::requestShutdown()
qDebug() << __func__ << ": Requesting shutdown";
startThread();
window->hide();
if (govModel) govModel->stop();
if (walletModel) walletModel->stop();
window->setClientModel(nullptr);
pollShutdownTimer->stop();
Expand Down Expand Up @@ -488,13 +491,21 @@ void BitcoinApplication::initializeResult(int retval)
window->setClientModel(clientModel);

#ifdef ENABLE_WALLET
mnModel = new MNModel(this);
govModel = new GovernanceModel(clientModel, mnModel);
// TODO: Expose secondary wallets
if (!vpwallets.empty()) {
walletModel = new WalletModel(vpwallets[0], optionsModel);
walletModel->setClientModel(clientModel);
mnModel->setWalletModel(walletModel);
govModel->setWalletModel(walletModel);
walletModel->init();
mnModel->init();

window->setGovModel(govModel);
window->addWallet(PIVXGUI::DEFAULT_WALLET, walletModel);
window->setCurrentWallet(PIVXGUI::DEFAULT_WALLET);
window->setMNModel(mnModel);
}
#endif

Expand Down
14 changes: 14 additions & 0 deletions src/qt/pivx.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -223,5 +223,19 @@
<file alias="ic-check-cold-staking-enabled">pivx/res/img/ic-check-cold-staking-enabled.svg</file>
<file alias="ic-information">pivx/res/img/ic-information.svg</file>
<file alias="ic-information-hover">pivx/res/img/ic-information-hover.svg</file>
<file alias="ic-check-vote">pivx/res/img/ic-check-vote.svg</file>
<file alias="ic-check-vote-active">pivx/res/img/ic-check-vote-active.svg</file>
<file alias="ic-check-vote-dark">pivx/res/img/ic-check-vote-dark.svg</file>
<file alias="ic-check-vote-active-dark">pivx/res/img/ic-check-vote-active-dark.svg</file>
<file alias="ic-filter">pivx/res/img/ic-filter.svg</file>
<file alias="ic-link">pivx/res/img/ic-link.svg</file>
<file alias="ic-link-hover">pivx/res/img/ic-link-hover.svg</file>
<file alias="ic-nav-governance">pivx/res/img/ic-nav-governance.svg</file>
<file alias="ic-nav-governance-active">pivx/res/img/ic-nav-governance-active.svg</file>
<file alias="ic-nav-governance-hover">pivx/res/img/ic-nav-governance-hover.svg</file>
<file alias="ic-time">pivx/res/img/ic-time.svg</file>
<file alias="img-empty-governance">pivx/res/img/img-empty-governance.svg</file>
<file alias="img-empty-dark-governance">pivx/res/img/img-empty-dark-governance.svg</file>
<file alias="ic-check-block">pivx/res/img/ic-check-block.svg</file>
</qresource>
</RCC>
14 changes: 11 additions & 3 deletions src/qt/pivx/contactsdropdown.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include "addresstablemodel.h"

#define DECORATION_SIZE 70
#define NUM_ITEMS 3
#define NUM_ITEMS 2

class ContViewHolder : public FurListRow<QWidget*>
{
Expand Down Expand Up @@ -48,12 +48,20 @@ class ContViewHolder : public FurListRow<QWidget*>
ContactDropdownRow* row = nullptr;
};

ContactsDropdown::ContactsDropdown(int minWidth, int minHeight, PWidget *parent) :
PWidget(parent)
ContactsDropdown::ContactsDropdown(int minWidth, int minHeight, PIVXGUI* _window, QWidget* _parent) : PWidget(_window, _parent)
{
this->setStyleSheet(_window->styleSheet());
init(minWidth, minHeight);
}

ContactsDropdown::ContactsDropdown(int minWidth, int minHeight, PWidget* parent) : PWidget(parent)
{
this->setStyleSheet(parent->styleSheet());
init(minWidth, minHeight);
}

void ContactsDropdown::init(int minWidth, int minHeight)
{
delegate = new FurAbstractListItemDelegate(
DECORATION_SIZE,
new ContViewHolder(isLightTheme()),
Expand Down
5 changes: 4 additions & 1 deletion src/qt/pivx/contactsdropdown.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ class ContactsDropdown : public PWidget
{
Q_OBJECT
public:
explicit ContactsDropdown(int minWidth, int minHeight, PWidget *parent = nullptr);
explicit ContactsDropdown(int minWidth, int minHeight, PWidget* parent = nullptr);
ContactsDropdown(int minWidth, int minHeight, PIVXGUI* _window = nullptr,
QWidget* parent = nullptr);

void resizeList(int minWidth, int mintHeight);
void setWalletModel(WalletModel* _model, const QStringList& type);
Expand All @@ -42,6 +44,7 @@ class ContactsDropdown : public PWidget
AddressFilterProxyModel *filter = nullptr;
QListView *list;
QFrame *frameList;
void init(int minWidth, int minHeight);
private Q_SLOTS:
void handleClick(const QModelIndex &index);
};
Expand Down
Loading