@ -67,10 +67,68 @@ MainWindow::MainWindow(QWidget *parent) :
rpc - > refresh ( ) ;
}
void MainWindow : : setupTurnstileDialog ( ) {
void MainWindow : : turnstileProgress ( ) {
Ui_TurnstileProgress progress ;
QDialog d ( this ) ;
progress . setupUi ( & d ) ;
// Turnstile migration
QObject : : connect ( ui - > actionTurnstile_Migration , & QAction : : triggered , [ = ] ( ) {
QIcon icon = QApplication : : style ( ) - > standardIcon ( QStyle : : SP_MessageBoxWarning ) ;
progress . msgIcon - > setPixmap ( icon . pixmap ( 64 , 64 ) ) ;
progress . buttonBox - > button ( QDialogButtonBox : : Cancel ) - > setText ( " Abort " ) ;
auto fnUpdateProgressUI = [ = ] ( ) {
// Get the plan progress
if ( rpc - > getTurnstile ( ) - > isMigrationPresent ( ) ) {
auto curProgress = rpc - > getTurnstile ( ) - > getPlanProgress ( ) ;
progress . progressTxt - > setText ( QString : : number ( curProgress . step ) % QString ( " / " ) % QString : : number ( curProgress . totalSteps ) ) ;
progress . progressBar - > setValue ( 100 * curProgress . step / curProgress . totalSteps ) ;
auto nextTxBlock = curProgress . nextBlock - Settings : : getInstance ( ) - > getBlockNumber ( ) ;
if ( curProgress . step = = curProgress . totalSteps ) {
auto txt = QString ( " Turnstile migration finished " ) ;
if ( curProgress . hasErrors ) {
txt = txt + " . There were some errors. \n \n Your funds are all in your wallet, so you should be able to finish moving them manually. " ;
}
progress . nextTx - > setText ( txt ) ;
} else {
progress . nextTx - > setText ( QString ( " Next transaction in " )
% QString : : number ( nextTxBlock < 0 ? 0 : nextTxBlock )
% " blocks \n "
% ( nextTxBlock < = 0 ? " (waiting for confirmations) " : " " ) ) ;
}
} else {
progress . progressTxt - > setText ( " " ) ;
progress . progressBar - > setValue ( 0 ) ;
progress . nextTx - > setText ( " No turnstile migration is in progress " ) ;
}
} ;
QTimer progressTimer ( this ) ;
QObject : : connect ( & progressTimer , & QTimer : : timeout , fnUpdateProgressUI ) ;
progressTimer . start ( Utils : : updateSpeed ) ;
fnUpdateProgressUI ( ) ;
auto accpeted = d . exec ( ) ;
auto curProgress = rpc - > getTurnstile ( ) - > getPlanProgress ( ) ;
if ( accpeted = = QDialog : : Accepted & & curProgress . step = = curProgress . totalSteps ) {
// Finished, so delete the file
rpc - > getTurnstile ( ) - > removeFile ( ) ;
}
if ( accpeted = = QDialog : : Rejected & & curProgress . step ! = curProgress . totalSteps ) {
auto abort = QMessageBox : : warning ( this , " Are you sure you want to Abort? " ,
" Are you sure you want to abort the migration? \n All further transactions will be cancelled. \n All your funds are still in your wallet. " ,
QMessageBox : : Yes , QMessageBox : : No ) ;
if ( abort ) {
rpc - > getTurnstile ( ) - > removeFile ( ) ;
}
}
}
void MainWindow : : turnstileDoMigration ( ) {
Ui_Turnstile turnstile ;
QDialog d ( this ) ;
turnstile . setupUi ( & d ) ;
@ -89,7 +147,7 @@ void MainWindow::setupTurnstileDialog() {
return bal ;
} ;
turnstile . migrateZaddList - > addItem ( " All Sprout z-Addrs " ) ;
//turnstile.migrateZaddList->addItem("All Sprout z-Addrs");
turnstile . fromBalance - > setText ( Settings : : getInstance ( ) - > getZECUSDDisplayFormat ( fnGetAllSproutBalance ( ) ) ) ;
for ( auto addr : * rpc - > getAllZAddresses ( ) ) {
if ( Settings : : getInstance ( ) - > isSaplingAddress ( addr ) ) {
@ -141,55 +199,18 @@ void MainWindow::setupTurnstileDialog() {
" The migration will now start. You can check progress in the File -> Turnstile Migration menu. \n \n YOU MUST BACKUP YOUR wallet.dat NOW!. \n \n New Addresses have been added to your wallet which will be used for the migration. " ,
QMessageBox : : Ok ) ;
}
} ) ;
// Progress update button
QObject : : connect ( ui - > actionProgress , & QAction : : triggered , [ = ] ( ) {
Ui_TurnstileProgress progress ;
QDialog d ( this ) ;
progress . setupUi ( & d ) ;
QIcon icon = QApplication : : style ( ) - > standardIcon ( QStyle : : SP_MessageBoxWarning ) ;
progress . msgIcon - > setPixmap ( icon . pixmap ( 64 , 64 ) ) ;
progress . buttonBox - > button ( QDialogButtonBox : : Cancel ) - > setText ( " Abort " ) ;
auto fnUpdateProgressUI = [ = ] ( ) {
// Get the plan progress
if ( rpc - > getTurnstile ( ) - > isMigrationActive ( ) ) {
auto curProgress = rpc - > getTurnstile ( ) - > getPlanProgress ( ) ;
progress . progressTxt - > setText ( QString : : number ( curProgress . step ) % QString ( " / " ) % QString : : number ( curProgress . totalSteps ) ) ;
progress . progressBar - > setValue ( 100 * curProgress . step / curProgress . totalSteps ) ;
auto nextTxBlock = curProgress . nextBlock - Settings : : getInstance ( ) - > getBlockNumber ( ) ;
if ( curProgress . step = = curProgress . totalSteps ) {
auto txt = QString ( " Turnstile migration finished " ) ;
if ( curProgress . hasErrors ) {
txt = txt + " . There were some errors. \n \n Your funds are all in your wallet, so you should be able to finish moving them manually. " ;
}
progress . nextTx - > setText ( txt ) ;
} else {
progress . nextTx - > setText ( QString ( " Next transaction in " )
% QString : : number ( nextTxBlock < 0 ? 0 : nextTxBlock )
% " blocks " ) ;
}
} else {
progress . progressTxt - > setText ( " " ) ;
progress . progressBar - > setValue ( 0 ) ;
progress . nextTx - > setText ( " No turnstile migration is in progress " ) ;
}
} ;
QTimer progressTimer ( this ) ;
QObject : : connect ( & progressTimer , & QTimer : : timeout , fnUpdateProgressUI ) ;
progressTimer . start ( Utils : : updateSpeed ) ;
fnUpdateProgressUI ( ) ;
d . exec ( ) ;
void MainWindow : : setupTurnstileDialog ( ) {
// Turnstile migration
QObject : : connect ( ui - > actionTurnstile_Migration , & QAction : : triggered , [ = ] ( ) {
// If there is current migration that is present, show the progress button
if ( rpc - > getTurnstile ( ) - > isMigrationPresent ( ) )
turnstileProgress ( ) ;
else
turnstileDoMigration ( ) ;
} ) ;
}
void MainWindow : : setupStatusBar ( ) {