Skip to content

Commit

Permalink
Disable signing button on some cases (#824)
Browse files Browse the repository at this point in the history
IB-6637

Signed-off-by: Raul Metsma <38207162766@eesti.ee>

Co-authored-by: Raul Metsma <38207162766@eesti.ee>
  • Loading branch information
metsma and Raul Metsma authored Sep 21, 2020
1 parent 5fbb738 commit b9b3a96
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 16 deletions.
23 changes: 11 additions & 12 deletions client/widgets/ContainerPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ void ContainerPage::clear()
{
ui->leftPane->clear();
ui->rightPane->clear();
canDecrypt = false;
isSupported = false;
}

void ContainerPage::clearPopups()
Expand Down Expand Up @@ -305,7 +305,9 @@ void ContainerPage::showMainAction(const QList<Actions> &actions)

void ContainerPage::showSigningButton()
{
if(cardInReader.isEmpty())
if(!isSupported)
hideMainAction();
else if(cardInReader.isEmpty())
showMainAction({ SignatureMobile, SignatureSmartID });
else if(isSeal)
showMainAction({ SignatureToken, SignatureMobile, SignatureSmartID });
Expand All @@ -316,7 +318,7 @@ void ContainerPage::showSigningButton()
void ContainerPage::transition(CryptoDoc* container, bool canDecrypt)
{
clear();
this->canDecrypt = canDecrypt;
isSupported = canDecrypt;
ContainerState state = container->state();
ui->leftPane->stateChange(state);
ui->rightPane->stateChange(state);
Expand Down Expand Up @@ -348,17 +350,16 @@ void ContainerPage::transition(DigiDoc* container)

for(const DigiDocSignature &c: container->timestamps())
{
SignatureItem *item = new SignatureItem(c, state, false, ui->rightPane);
SignatureItem *item = new SignatureItem(c, state, ui->rightPane);
if(item->isInvalid())
addError(item, errors);
ui->rightPane->addHeaderWidget(item);
}
}

bool enableSigning = container->isSupported();
for(const DigiDocSignature &c: container->signatures())
{
SignatureItem *item = new SignatureItem(c, state, enableSigning, ui->rightPane);
SignatureItem *item = new SignatureItem(c, state, ui->rightPane);
if(item->isInvalid())
addError(item, errors);
ui->rightPane->addWidget(item);
Expand All @@ -373,18 +374,16 @@ void ContainerPage::transition(DigiDoc* container)
if(container->fileName().endsWith(QStringLiteral("ddoc"), Qt::CaseInsensitive))
emit warning(UnsupportedDDocWarning);

if(enableSigning || container->isService())
showSigningButton();
else
hideMainAction();
isSupported = container->isSupported() || container->isService();
showSigningButton();

ui->leftPane->setModel(container->documentModel());
updatePanes(state);
}

void ContainerPage::update(bool canDecrypt, CryptoDoc* container)
{
this->canDecrypt = canDecrypt;
isSupported = canDecrypt;
if(ui->leftPane->getState() & EncryptedContainer)
updateDecryptionButton();

Expand All @@ -400,7 +399,7 @@ void ContainerPage::update(bool canDecrypt, CryptoDoc* container)

void ContainerPage::updateDecryptionButton()
{
if(!canDecrypt || cardInReader.isEmpty())
if(!isSupported || cardInReader.isEmpty())
hideMainAction();
else if(isSeal)
showMainAction({ DecryptToken });
Expand Down
2 changes: 1 addition & 1 deletion client/widgets/ContainerPage.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public slots:

const char *cancelText = "CANCEL";
const char *convertText = "ENCRYPT";
bool canDecrypt = false;
bool isSupported = false;
bool isSeal = false;
bool isExpired = false;
bool isBlocked = false;
Expand Down
4 changes: 2 additions & 2 deletions client/widgets/SignatureItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class SignatureItem::Private: public Ui::SignatureItem
QString status;
};

SignatureItem::SignatureItem(DigiDocSignature s, ContainerState /*state*/, bool isSupported, QWidget *parent)
SignatureItem::SignatureItem(DigiDocSignature s, ContainerState /*state*/, QWidget *parent)
: Item(parent)
, ui(new Private(std::move(s)))
{
Expand All @@ -67,7 +67,7 @@ SignatureItem::SignatureItem(DigiDocSignature s, ContainerState /*state*/, bool
ui->remove->setIcons(QStringLiteral("/images/icon_remove.svg"), QStringLiteral("/images/icon_remove_hover.svg"),
QStringLiteral("/images/icon_remove_pressed.svg"), 17, 17);
ui->remove->init(LabelButton::White, QString(), 0);
ui->remove->setVisible(isSupported);
ui->remove->setVisible(s.parent()->isSupported());
connect(ui->remove, &LabelButton::clicked, this, &SignatureItem::removeSignature);
init();
}
Expand Down
2 changes: 1 addition & 1 deletion client/widgets/SignatureItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class SignatureItem : public Item
Q_OBJECT

public:
explicit SignatureItem(DigiDocSignature s, ria::qdigidoc4::ContainerState state, bool isSupported, QWidget *parent = nullptr);
explicit SignatureItem(DigiDocSignature s, ria::qdigidoc4::ContainerState state, QWidget *parent = nullptr);
~SignatureItem() override;

ria::qdigidoc4::WarningType getError() const;
Expand Down

0 comments on commit b9b3a96

Please sign in to comment.