|
|
@ -18,52 +18,99 @@ MainWindow::MainWindow(QWidget *parent) : |
|
|
|
{ |
|
|
|
ui->setupUi(this); |
|
|
|
|
|
|
|
// Status Bar
|
|
|
|
loadingLabel = new QLabel(); |
|
|
|
loadingMovie = new QMovie(":/icons/res/loading.gif"); |
|
|
|
loadingMovie->setScaledSize(QSize(32, 16)); |
|
|
|
loadingMovie->start(); |
|
|
|
loadingLabel->setAttribute(Qt::WA_NoSystemBackground); |
|
|
|
loadingLabel->setMovie(loadingMovie); |
|
|
|
// Status Bar
|
|
|
|
setupStatusBar(); |
|
|
|
|
|
|
|
// Settings editor
|
|
|
|
setupSettingsModal(); |
|
|
|
|
|
|
|
// Set up exit action
|
|
|
|
QObject::connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); |
|
|
|
|
|
|
|
// Set up donate action
|
|
|
|
QObject::connect(ui->actionDonate, &QAction::triggered, this, &MainWindow::donate); |
|
|
|
|
|
|
|
// Set up check for updates action
|
|
|
|
QObject::connect(ui->actionCheck_for_Updates, &QAction::triggered, [=] () { |
|
|
|
QDesktopServices::openUrl(QUrl("https://github.com/adityapk00/zcash-qt-wallet/releases")); |
|
|
|
}); |
|
|
|
|
|
|
|
QObject::connect(ui->actionImport_Private_Keys, &QAction::triggered, this, &MainWindow::importPrivKeys); |
|
|
|
|
|
|
|
// Set up about action
|
|
|
|
QObject::connect(ui->actionAbout, &QAction::triggered, [=] () { |
|
|
|
QDialog aboutDialog(this); |
|
|
|
Ui_about about; |
|
|
|
about.setupUi(&aboutDialog); |
|
|
|
|
|
|
|
QString version = QString("Version ") % QString(APP_VERSION) % " (" % QString(__DATE__) % ")"; |
|
|
|
about.versionLabel->setText(version); |
|
|
|
|
|
|
|
ui->statusBar->addPermanentWidget(loadingLabel); |
|
|
|
loadingLabel->setVisible(false); |
|
|
|
aboutDialog.exec(); |
|
|
|
}); |
|
|
|
|
|
|
|
// Initialize to the balances tab
|
|
|
|
ui->tabWidget->setCurrentIndex(0); |
|
|
|
|
|
|
|
setupSendTab(); |
|
|
|
setupTransactionsTab(); |
|
|
|
setupRecieveTab(); |
|
|
|
setupBalancesTab(); |
|
|
|
|
|
|
|
rpc = new RPC(new QNetworkAccessManager(this), this); |
|
|
|
rpc->refresh(); |
|
|
|
} |
|
|
|
|
|
|
|
// Custom status bar menu
|
|
|
|
void MainWindow::setupStatusBar() { |
|
|
|
// Status Bar
|
|
|
|
loadingLabel = new QLabel(); |
|
|
|
loadingMovie = new QMovie(":/icons/res/loading.gif"); |
|
|
|
loadingMovie->setScaledSize(QSize(32, 16)); |
|
|
|
loadingMovie->start(); |
|
|
|
loadingLabel->setAttribute(Qt::WA_NoSystemBackground); |
|
|
|
loadingLabel->setMovie(loadingMovie); |
|
|
|
|
|
|
|
ui->statusBar->addPermanentWidget(loadingLabel); |
|
|
|
loadingLabel->setVisible(false); |
|
|
|
|
|
|
|
// Custom status bar menu
|
|
|
|
ui->statusBar->setContextMenuPolicy(Qt::CustomContextMenu); |
|
|
|
QObject::connect(ui->statusBar, &QStatusBar::customContextMenuRequested, [=](QPoint pos) { |
|
|
|
auto msg = ui->statusBar->currentMessage(); |
|
|
|
QMenu menu(this); |
|
|
|
QMenu menu(this); |
|
|
|
|
|
|
|
if (!msg.isEmpty() && msg.startsWith(Utils::txidStatusMessage)) { |
|
|
|
auto txid = msg.split(":")[1].trimmed(); |
|
|
|
if (!msg.isEmpty() && msg.startsWith(Utils::txidStatusMessage)) { |
|
|
|
auto txid = msg.split(":")[1].trimmed(); |
|
|
|
menu.addAction("Copy txid", [=]() { |
|
|
|
QGuiApplication::clipboard()->setText(txid); |
|
|
|
}); |
|
|
|
menu.addAction("View tx on block explorer", [=]() { |
|
|
|
QString url; |
|
|
|
if (Settings::getInstance()->isTestnet()) { |
|
|
|
url = "https://explorer.testnet.z.cash/tx/" + txid; |
|
|
|
} else { |
|
|
|
url = "https://explorer.zcha.in/transactions/" + txid; |
|
|
|
} |
|
|
|
QDesktopServices::openUrl(QUrl(url)); |
|
|
|
}); |
|
|
|
menu.addAction("View tx on block explorer", [=]() { |
|
|
|
QString url; |
|
|
|
if (Settings::getInstance()->isTestnet()) { |
|
|
|
url = "https://explorer.testnet.z.cash/tx/" + txid; |
|
|
|
} |
|
|
|
else { |
|
|
|
url = "https://explorer.zcha.in/transactions/" + txid; |
|
|
|
} |
|
|
|
QDesktopServices::openUrl(QUrl(url)); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
menu.addAction("Refresh", [=]() { |
|
|
|
rpc->refresh(); |
|
|
|
}); |
|
|
|
QPoint gpos(mapToGlobal(pos).x(), mapToGlobal(pos).y() + this->height() - ui->statusBar->height()); |
|
|
|
menu.exec(gpos); |
|
|
|
menu.addAction("Refresh", [=]() { |
|
|
|
rpc->refresh(); |
|
|
|
}); |
|
|
|
QPoint gpos(mapToGlobal(pos).x(), mapToGlobal(pos).y() + this->height() - ui->statusBar->height()); |
|
|
|
menu.exec(gpos); |
|
|
|
}); |
|
|
|
|
|
|
|
statusLabel = new QLabel(); |
|
|
|
ui->statusBar->addPermanentWidget(statusLabel); |
|
|
|
statusLabel = new QLabel(); |
|
|
|
ui->statusBar->addPermanentWidget(statusLabel); |
|
|
|
|
|
|
|
statusIcon = new QLabel(); |
|
|
|
ui->statusBar->addPermanentWidget(statusIcon); |
|
|
|
|
|
|
|
statusIcon = new QLabel(); |
|
|
|
ui->statusBar->addPermanentWidget(statusIcon); |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::setupSettingsModal() { |
|
|
|
// Set up File -> Settings action
|
|
|
|
QObject::connect(ui->actionSettings, &QAction::triggered, [=]() { |
|
|
|
QDialog settingsDialog(this); |
|
|
@ -73,7 +120,6 @@ MainWindow::MainWindow(QWidget *parent) : |
|
|
|
QIntValidator validator(0, 65535); |
|
|
|
settings.port->setValidator(&validator); |
|
|
|
|
|
|
|
|
|
|
|
// If values are coming from zcash.conf, then disable all the fields
|
|
|
|
auto zcashConfLocation = Settings::getInstance()->getZcashdConfLocation(); |
|
|
|
if (!zcashConfLocation.isEmpty()) { |
|
|
@ -95,7 +141,7 @@ MainWindow::MainWindow(QWidget *parent) : |
|
|
|
settings.rpcuser->setText(Settings::getInstance()->getUsernamePassword().split(":")[0]); |
|
|
|
settings.rpcpassword->setText(Settings::getInstance()->getUsernamePassword().split(":")[1]); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (settingsDialog.exec() == QDialog::Accepted) { |
|
|
|
if (zcashConfLocation.isEmpty()) { |
|
|
|
// Save settings
|
|
|
@ -113,42 +159,6 @@ MainWindow::MainWindow(QWidget *parent) : |
|
|
|
} |
|
|
|
}; |
|
|
|
}); |
|
|
|
|
|
|
|
// Set up exit action
|
|
|
|
QObject::connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); |
|
|
|
|
|
|
|
// Set up donate action
|
|
|
|
QObject::connect(ui->actionDonate, &QAction::triggered, this, &MainWindow::donate); |
|
|
|
|
|
|
|
// Set up check for updates action
|
|
|
|
QObject::connect(ui->actionCheck_for_Updates, &QAction::triggered, [=] () { |
|
|
|
QDesktopServices::openUrl(QUrl("https://github.com/adityapk00/zcash-qt-wallet/releases")); |
|
|
|
}); |
|
|
|
|
|
|
|
QObject::connect(ui->actionImport_Private_Keys, &QAction::triggered, this, &MainWindow::importPrivKeys); |
|
|
|
|
|
|
|
// Set up about action
|
|
|
|
QObject::connect(ui->actionAbout, &QAction::triggered, [=] () { |
|
|
|
QDialog aboutDialog(this); |
|
|
|
Ui_about about; |
|
|
|
about.setupUi(&aboutDialog); |
|
|
|
|
|
|
|
QString version = QString("Version ") % QString(APP_VERSION) % " (" % QString(__DATE__) % ")"; |
|
|
|
about.versionLabel->setText(version); |
|
|
|
|
|
|
|
aboutDialog.exec(); |
|
|
|
}); |
|
|
|
|
|
|
|
// Initialize to the balances tab
|
|
|
|
ui->tabWidget->setCurrentIndex(0); |
|
|
|
|
|
|
|
setupSendTab(); |
|
|
|
setupTransactionsTab(); |
|
|
|
setupRecieveTab(); |
|
|
|
setupBalancesTab(); |
|
|
|
|
|
|
|
rpc = new RPC(new QNetworkAccessManager(this), this); |
|
|
|
rpc->refresh(); |
|
|
|
} |
|
|
|
|
|
|
|
void MainWindow::donate() { |
|
|
|