mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	Wizard: autoselect open if wallets available & refresh wallets when wizard opened
This commit is contained in:
		
							parent
							
								
									bd4400a7f2
								
							
						
					
					
						commit
						68c493b736
					
				
					 7 changed files with 57 additions and 27 deletions
				
			
		| 
						 | 
				
			
			@ -11,13 +11,22 @@
 | 
			
		|||
 | 
			
		||||
#include "libwalletqt/WalletManager.h"
 | 
			
		||||
 | 
			
		||||
MenuPage::MenuPage(AppContext *ctx, QWidget *parent) :
 | 
			
		||||
        QWizardPage(parent),
 | 
			
		||||
        ui(new Ui::MenuPage),
 | 
			
		||||
        m_ctx(ctx) {
 | 
			
		||||
MenuPage::MenuPage(AppContext *ctx, WalletKeysFilesModel *wallets, QWidget *parent)
 | 
			
		||||
        : QWizardPage(parent)
 | 
			
		||||
        , ui(new Ui::MenuPage)
 | 
			
		||||
        , m_ctx(ctx)
 | 
			
		||||
        , m_walletKeysFilesModel(wallets)
 | 
			
		||||
{
 | 
			
		||||
    ui->setupUi(this);
 | 
			
		||||
    this->setButtonText(QWizard::FinishButton, "Open recent wallet");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MenuPage::initializePage() {
 | 
			
		||||
    if (m_walletKeysFilesModel->rowCount() > 0) {
 | 
			
		||||
        ui->radioOpen->setChecked(true);
 | 
			
		||||
    } else {
 | 
			
		||||
        ui->radioCreate->setChecked(true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MenuPage::nextId() const {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,13 +19,14 @@ class MenuPage : public QWizardPage
 | 
			
		|||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    explicit MenuPage(AppContext *ctx, QWidget *parent = nullptr);
 | 
			
		||||
    explicit MenuPage(AppContext *ctx, WalletKeysFilesModel *wallets, QWidget *parent = nullptr);
 | 
			
		||||
    void initializePage() override;
 | 
			
		||||
    bool validatePage() override;
 | 
			
		||||
    int nextId() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    AppContext *m_ctx;
 | 
			
		||||
    QLabel *topLabel;
 | 
			
		||||
    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
			
		||||
    Ui::MenuPage *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,8 +6,8 @@
 | 
			
		|||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>424</width>
 | 
			
		||||
    <height>245</height>
 | 
			
		||||
    <width>617</width>
 | 
			
		||||
    <height>463</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +29,9 @@
 | 
			
		|||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QRadioButton" name="radioCreate">
 | 
			
		||||
     <property name="focusPolicy">
 | 
			
		||||
      <enum>Qt::ClickFocus</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Create new wallet</string>
 | 
			
		||||
     </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +39,9 @@
 | 
			
		|||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QRadioButton" name="radioOpen">
 | 
			
		||||
     <property name="focusPolicy">
 | 
			
		||||
      <enum>Qt::ClickFocus</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Open wallet file</string>
 | 
			
		||||
     </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +49,9 @@
 | 
			
		|||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QRadioButton" name="radioSeed">
 | 
			
		||||
     <property name="focusPolicy">
 | 
			
		||||
      <enum>Qt::ClickFocus</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Restore wallet from seed</string>
 | 
			
		||||
     </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +59,9 @@
 | 
			
		|||
   </item>
 | 
			
		||||
   <item>
 | 
			
		||||
    <widget class="QRadioButton" name="radioViewOnly">
 | 
			
		||||
     <property name="focusPolicy">
 | 
			
		||||
      <enum>Qt::ClickFocus</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="text">
 | 
			
		||||
      <string>Import from keys</string>
 | 
			
		||||
     </property>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,12 +10,12 @@
 | 
			
		|||
#include <QFileDialog>
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
 | 
			
		||||
// @TODO: rescan wallet dir on wizard open
 | 
			
		||||
 | 
			
		||||
OpenWalletPage::OpenWalletPage(AppContext *ctx, QWidget *parent) :
 | 
			
		||||
        QWizardPage(parent),
 | 
			
		||||
        ui(new Ui::OpenWalletPage),
 | 
			
		||||
        m_ctx(ctx) {
 | 
			
		||||
OpenWalletPage::OpenWalletPage(AppContext *ctx, WalletKeysFilesModel *wallets, QWidget *parent)
 | 
			
		||||
        : QWizardPage(parent)
 | 
			
		||||
        , ui(new Ui::OpenWalletPage)
 | 
			
		||||
        , m_ctx(ctx)
 | 
			
		||||
        , m_walletKeysFilesModel(wallets)
 | 
			
		||||
{
 | 
			
		||||
    ui->setupUi(this);
 | 
			
		||||
 | 
			
		||||
    connect(ui->btnBrowse, &QPushButton::clicked, [=]{
 | 
			
		||||
| 
						 | 
				
			
			@ -46,11 +46,8 @@ OpenWalletPage::OpenWalletPage(AppContext *ctx, QWidget *parent) :
 | 
			
		|||
    ui->walletTable->setSelectionBehavior(QAbstractItemView::SelectRows);
 | 
			
		||||
    ui->walletTable->setContextMenuPolicy(Qt::CustomContextMenu);
 | 
			
		||||
 | 
			
		||||
    this->walletKeysFilesModel = new WalletKeysFilesModel(m_ctx);
 | 
			
		||||
    this->walletKeysFilesModel->refresh();
 | 
			
		||||
 | 
			
		||||
    m_keysProxy = new WalletKeysFilesProxyModel(this, m_ctx->networkType);
 | 
			
		||||
    m_keysProxy->setSourceModel(this->walletKeysFilesModel);
 | 
			
		||||
    m_keysProxy->setSourceModel(m_walletKeysFilesModel);
 | 
			
		||||
    m_keysProxy->setSortRole(Qt::UserRole);
 | 
			
		||||
 | 
			
		||||
    ui->walletTable->setModel(m_keysProxy);
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +64,10 @@ OpenWalletPage::OpenWalletPage(AppContext *ctx, QWidget *parent) :
 | 
			
		|||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void OpenWalletPage::initializePage() {
 | 
			
		||||
    m_walletKeysFilesModel->refresh();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void OpenWalletPage::updatePath() {
 | 
			
		||||
    QModelIndex index = ui->walletTable->currentIndex();
 | 
			
		||||
    if (!index.isValid()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,8 @@ class OpenWalletPage : public QWizardPage
 | 
			
		|||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    explicit OpenWalletPage(AppContext *ctx, QWidget *parent = nullptr);
 | 
			
		||||
    explicit OpenWalletPage(AppContext *ctx, WalletKeysFilesModel *wallets, QWidget *parent = nullptr);
 | 
			
		||||
    void initializePage() override;
 | 
			
		||||
    bool validatePage() override;
 | 
			
		||||
    int nextId() const override;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,10 +32,8 @@ private:
 | 
			
		|||
    void updatePath();
 | 
			
		||||
 | 
			
		||||
    AppContext *m_ctx;
 | 
			
		||||
    WalletKeysFilesModel *walletKeysFilesModel;
 | 
			
		||||
    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
			
		||||
    WalletKeysFilesProxyModel *m_keysProxy;
 | 
			
		||||
    QSortFilterProxyModel *ll;
 | 
			
		||||
    QLabel *topLabel;
 | 
			
		||||
    Ui::OpenWalletPage *ui;
 | 
			
		||||
    QStandardItemModel *m_model;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,14 +18,20 @@
 | 
			
		|||
#include <QScreen>
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
 | 
			
		||||
WalletWizard::WalletWizard(AppContext *ctx, WalletWizard::Page startPage, QWidget *parent) : QWizard(parent),
 | 
			
		||||
        m_ctx(ctx) {
 | 
			
		||||
WalletWizard::WalletWizard(AppContext *ctx, WalletWizard::Page startPage, QWidget *parent)
 | 
			
		||||
        : QWizard(parent)
 | 
			
		||||
        , m_ctx(ctx)
 | 
			
		||||
{
 | 
			
		||||
    this->setWindowTitle("Welcome to Feather Wallet");
 | 
			
		||||
    this->setWindowIcon(QIcon(":/assets/images/appicons/64x64.png"));
 | 
			
		||||
    auto openWalletPage = new OpenWalletPage(m_ctx, this);
 | 
			
		||||
 | 
			
		||||
    m_walletKeysFilesModel = new WalletKeysFilesModel(m_ctx, this);
 | 
			
		||||
    m_walletKeysFilesModel->refresh();
 | 
			
		||||
 | 
			
		||||
    auto openWalletPage = new OpenWalletPage(m_ctx, m_walletKeysFilesModel, this);
 | 
			
		||||
    auto createWallet = new CreateWalletPage(m_ctx, this);
 | 
			
		||||
    auto createWalletSeed = new CreateWalletSeedPage(m_ctx, this);
 | 
			
		||||
    setPage(Page_Menu, new MenuPage(m_ctx, this));
 | 
			
		||||
    setPage(Page_Menu, new MenuPage(m_ctx, m_walletKeysFilesModel, this));
 | 
			
		||||
    setPage(Page_CreateWallet, createWallet);
 | 
			
		||||
    setPage(Page_OpenWallet, openWalletPage);
 | 
			
		||||
    setPage(Page_CreateWalletSeed, createWalletSeed);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,8 @@ signals:
 | 
			
		|||
 | 
			
		||||
private:
 | 
			
		||||
    AppContext *m_ctx;
 | 
			
		||||
    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
			
		||||
 | 
			
		||||
    void createWallet();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue