@@ -550,6 +550,34 @@ void CoinControlDialog::changeEvent(QEvent* e)
550550 QDialog::changeEvent (e);
551551}
552552
553+ void CoinControlDialog::setViewOnly (bool view_only)
554+ {
555+ m_view_only = view_only;
556+
557+ ui->pushButtonSelectAll ->setVisible (!view_only);
558+ ui->treeWidget ->setColumnHidden (COLUMN_CHECKBOX, view_only);
559+ ui->frame ->setVisible (!view_only);
560+
561+ ui->labelCoinControlQuantity ->setVisible (!view_only);
562+ ui->labelCoinControlAmount ->setVisible (!view_only);
563+ ui->labelCoinControlFee ->setVisible (!view_only);
564+ ui->labelCoinControlAfterFee ->setVisible (!view_only);
565+ ui->labelCoinControlBytes ->setVisible (!view_only);
566+ ui->labelCoinControlChange ->setVisible (!view_only);
567+
568+ ui->labelCoinControlQuantityText ->setVisible (!view_only);
569+ ui->labelCoinControlAmountText ->setVisible (!view_only);
570+ ui->labelCoinControlFeeText ->setVisible (!view_only);
571+ ui->labelCoinControlAfterFeeText ->setVisible (!view_only);
572+ ui->labelCoinControlBytesText ->setVisible (!view_only);
573+ ui->labelCoinControlChangeText ->setVisible (!view_only);
574+
575+ if (view_only) {
576+ lockAction->setVisible (false );
577+ unlockAction->setVisible (false );
578+ }
579+ }
580+
553581void CoinControlDialog::updateView ()
554582{
555583 if (!model || !model->getOptionsModel () || !model->getAddressTableModel ())
@@ -560,8 +588,14 @@ void CoinControlDialog::updateView()
560588 ui->treeWidget ->clear ();
561589 ui->treeWidget ->setEnabled (false ); // performance, otherwise updateLabels would be called for every checked checkbox
562590 ui->treeWidget ->setAlternatingRowColors (!treeMode);
563- QFlags<Qt::ItemFlag> flgCheckbox = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
564- QFlags<Qt::ItemFlag> flgTristate = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsAutoTristate;
591+
592+ QFlags<Qt::ItemFlag> flgCheckbox = m_view_only ?
593+ (Qt::ItemIsSelectable | Qt::ItemIsEnabled) :
594+ (Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
595+
596+ QFlags<Qt::ItemFlag> flgTristate = m_view_only ?
597+ (Qt::ItemIsSelectable | Qt::ItemIsEnabled) :
598+ (Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsAutoTristate);
565599
566600 BitcoinUnit nDisplayUnit = model->getOptionsModel ()->getDisplayUnit ();
567601
@@ -578,7 +612,10 @@ void CoinControlDialog::updateView()
578612 itemWalletAddress = new CCoinControlWidgetItem (ui->treeWidget );
579613
580614 itemWalletAddress->setFlags (flgTristate);
581- itemWalletAddress->setCheckState (COLUMN_CHECKBOX, Qt::Unchecked);
615+
616+ if (!m_view_only) {
617+ itemWalletAddress->setCheckState (COLUMN_CHECKBOX, Qt::Unchecked);
618+ }
582619
583620 // label
584621 itemWalletAddress->setText (COLUMN_LABEL, sWalletLabel );
@@ -599,7 +636,9 @@ void CoinControlDialog::updateView()
599636 if (treeMode) itemOutput = new CCoinControlWidgetItem (itemWalletAddress);
600637 else itemOutput = new CCoinControlWidgetItem (ui->treeWidget );
601638 itemOutput->setFlags (flgCheckbox);
602- itemOutput->setCheckState (COLUMN_CHECKBOX,Qt::Unchecked);
639+ if (!m_view_only) {
640+ itemOutput->setCheckState (COLUMN_CHECKBOX, Qt::Unchecked);
641+ }
603642
604643 // address
605644 CTxDestination outputAddress;
@@ -649,13 +688,15 @@ void CoinControlDialog::updateView()
649688 // disable locked coins
650689 if (model->wallet ().isLockedCoin (output))
651690 {
652- m_coin_control.UnSelect (output); // just to be sure
691+ if (!m_view_only) {
692+ m_coin_control.UnSelect (output); // just to be sure
693+ }
653694 itemOutput->setDisabled (true );
654695 itemOutput->setIcon (COLUMN_CHECKBOX, platformStyle->SingleColorIcon (" :/icons/lock_closed" ));
655696 }
656697
657698 // set checkbox
658- if (m_coin_control.IsSelected (output))
699+ if (!m_view_only && m_coin_control.IsSelected (output))
659700 itemOutput->setCheckState (COLUMN_CHECKBOX, Qt::Checked);
660701 }
661702
@@ -669,7 +710,7 @@ void CoinControlDialog::updateView()
669710 }
670711
671712 // expand all partially selected
672- if (treeMode)
713+ if (treeMode && !m_view_only )
673714 {
674715 for (int i = 0 ; i < ui->treeWidget ->topLevelItemCount (); i++)
675716 if (ui->treeWidget ->topLevelItem (i)->checkState (COLUMN_CHECKBOX) == Qt::PartiallyChecked)
0 commit comments