Skip to content

Commit

Permalink
Update dialogs to new UI guidlines
Browse files Browse the repository at this point in the history
* AddRecipients
* CertificateDetails
* CertificateHistory
* KeyDialog

IB-7969

Signed-off-by: Raul Metsma <raul@metsma.ee>
  • Loading branch information
metsma committed Jan 2, 2025
1 parent d7f4bd8 commit 6ece2ed
Show file tree
Hide file tree
Showing 22 changed files with 725 additions and 1,167 deletions.
2 changes: 1 addition & 1 deletion client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ if( APPLE )
target_sources(${PROJECT_NAME} PRIVATE ${RESOURCE_FILES} Application_mac.mm MacMenuBar.cpp MacMenuBar.h dialogs/CertificateDetails_mac.mm Diagnostics_unix.cpp)
set_source_files_properties( Application_mac.mm dialogs/CertificateDetails_mac.mm PROPERTIES COMPILE_FLAGS "-fobjc-arc" )
set_source_files_properties( LdapSearch.cpp PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations" )
target_link_libraries(${PROJECT_NAME} "-framework Quartz" "-fobjc-arc")
target_link_libraries(${PROJECT_NAME} "-framework QuickLookUI" "-fobjc-arc")
find_library(PKCS11_MODULE NAMES opensc-pkcs11.so HINTS /Library/OpenSC/lib)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND cp -a ${PKCS11_MODULE} $<TARGET_FILE_DIR:${PROJECT_NAME}>
Expand Down
96 changes: 36 additions & 60 deletions client/dialogs/AddRecipients.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,11 @@
#include "LdapSearch.h"
#include "QSigner.h"
#include "Settings.h"
#include "Styles.h"
#include "TokenData.h"
#include "dialogs/WarningDialog.h"
#include "effects/Overlay.h"

#include <QtCore/QDateTime>
#include <QtCore/QDebug>
#include <QtCore/QJsonArray>
#include <QtCore/QJsonObject>
#include <QtNetwork/QSslConfiguration>
Expand All @@ -56,18 +54,8 @@ AddRecipients::AddRecipients(ItemList* itemList, QWidget *parent)
new Overlay(this);

ui->leftPane->init(ria::qdigidoc4::ToAddAdresses, QT_TRANSLATE_NOOP("ItemList", "Add recipients"));
ui->leftPane->setFont(Styles::font(Styles::Regular, 20));
ui->rightPane->init(ria::qdigidoc4::AddedAdresses, QT_TRANSLATE_NOOP("ItemList", "Added recipients"));
ui->rightPane->setFont(Styles::font(Styles::Regular, 20));

ui->fromCard->setFont(Styles::font(Styles::Condensed, 12));
ui->fromFile->setFont(Styles::font(Styles::Condensed, 12));
ui->fromHistory->setFont(Styles::font(Styles::Condensed, 12));

ui->cancel->setFont(Styles::font(Styles::Condensed, 14));
ui->confirm->setFont(Styles::font(Styles::Condensed, 14));

ui->confirm->setDisabled(rightList.isEmpty());
connect(ui->confirm, &QPushButton::clicked, this, &AddRecipients::accept);
connect(ui->cancel, &QPushButton::clicked, this, &AddRecipients::reject);
connect(ui->leftPane, &ItemList::search, this, [&](const QString &term) {
Expand All @@ -84,9 +72,14 @@ AddRecipients::AddRecipients(ItemList* itemList, QWidget *parent)
connect(ui->leftPane, &ItemList::addAll, this, &AddRecipients::addAllRecipientToRightPane );
connect(ui->rightPane, &ItemList::removed, ui->rightPane, &ItemList::removeItem );

connect(ui->fromCard, &QPushButton::clicked, this, &AddRecipients::addRecipientFromCard);
connect( qApp->signer(), &QSigner::authDataChanged, this, &AddRecipients::enableRecipientFromCard );
connect(ui->fromCard, &QPushButton::clicked, this, [this] {
addRecipient(qApp->signer()->tokenauth().cert());
});
auto enableRecipientFromCard = [this] {
ui->fromCard->setDisabled(qApp->signer()->tokenauth().cert().isNull());
};
enableRecipientFromCard();
connect(qApp->signer(), &QSigner::authDataChanged, this, std::move(enableRecipientFromCard));

connect(ui->fromFile, &QPushButton::clicked, this, &AddRecipients::addRecipientFromFile);
connect(ui->fromHistory, &QPushButton::clicked, this, &AddRecipients::addRecipientFromHistory);
Expand All @@ -106,21 +99,12 @@ void AddRecipients::addAllRecipientToRightPane()
QList<SslCertificate> history;
for(AddressItem *value: leftList)
{
if(rightList.contains(value->getKey()))
continue;
addRecipientToRightPane(value);
history.append(value->getKey().cert);
if(addRecipientToRightPane(value, true))
history.append(value->getKey().cert);
}
ui->confirm->setDisabled(rightList.isEmpty());
historyCertData.addAndSave(history);
}

void AddRecipients::addRecipientFromCard()
{
if(auto *item = addRecipientToLeftPane(qApp->signer()->tokenauth().cert()))
addRecipientToRightPane(item, true);
}

void AddRecipients::addRecipientFromFile()
{
QString file = FileDialog::getOpenFileName(this, windowTitle(), {},
Expand Down Expand Up @@ -150,10 +134,8 @@ void AddRecipients::addRecipientFromFile()
{
WarningDialog::show(this, tr("This certificate cannot be used for encryption"));
}
else if(auto *item = addRecipientToLeftPane(cert))
{
addRecipientToRightPane(item, true);
}
else
addRecipient(cert);
}

void AddRecipients::addRecipientFromHistory()
Expand All @@ -163,27 +145,28 @@ void AddRecipients::addRecipientFromHistory()
dlg->open();
}

AddressItem * AddRecipients::addRecipientToLeftPane(const QSslCertificate& cert)
void AddRecipients::addRecipient(const QSslCertificate& cert, bool select)
{
AddressItem *leftItem = leftList.value(cert);
if(leftItem)
return leftItem;

leftItem = new AddressItem(CKey(cert), ui->leftPane);
leftList.insert(cert, leftItem);
ui->leftPane->addWidget(leftItem);
bool contains = rightList.contains(cert);
leftItem->setDisabled(contains);
leftItem->showButton(contains ? AddressItem::Added : AddressItem::Add);

connect(leftItem, &AddressItem::add, this, [this](Item *item) {
addRecipientToRightPane(qobject_cast<AddressItem*>(item), true);
});

if(auto *add = ui->leftPane->findChild<QWidget*>(QStringLiteral("add")))
add->setVisible(true);
if(!leftItem)
{
leftItem = new AddressItem(cert, ui->leftPane);
leftList.insert(cert, leftItem);
ui->leftPane->addWidget(leftItem);
bool contains = rightList.contains(cert);
leftItem->setDisabled(contains);
leftItem->showButton(contains ? AddressItem::Added : AddressItem::Add);

connect(leftItem, &AddressItem::add, this, [this](Item *item) {
addRecipientToRightPane(qobject_cast<AddressItem*>(item), true);
});

if(auto *add = ui->leftPane->findChild<QWidget*>(QStringLiteral("add")))
add->setVisible(true);
}

return leftItem;
if(select)
addRecipientToRightPane(leftItem, true);
}

bool AddRecipients::addRecipientToRightPane(const CKey &key, bool update)
Expand Down Expand Up @@ -234,12 +217,14 @@ bool AddRecipients::addRecipientToRightPane(const CKey &key, bool update)
return true;
}

void AddRecipients::addRecipientToRightPane(AddressItem *leftItem, bool update)
bool AddRecipients::addRecipientToRightPane(AddressItem *leftItem, bool update)
{
if(addRecipientToRightPane(leftItem->getKey(), update)) {
auto result = addRecipientToRightPane(leftItem->getKey(), update);
if(result) {
leftItem->setDisabled(true);
leftItem->showButton(AddressItem::Added);
}
return result;
}

void AddRecipients::addSelectedCerts(const QList<HistoryCertData>& selectedCertData)
Expand All @@ -260,11 +245,6 @@ QString AddRecipients::defaultUrl(QLatin1String key, const QString &defaultValue
return Application::confValue(key).toString(defaultValue);
}

void AddRecipients::enableRecipientFromCard()
{
ui->fromCard->setDisabled( qApp->signer()->tokenauth().cert().isNull() );
}

bool AddRecipients::isUpdated() const
{
return updated;
Expand Down Expand Up @@ -297,8 +277,6 @@ void AddRecipients::removeRecipientFromRightPane(Item *toRemove)
void AddRecipients::search(const QString &term, bool select, const QString &type)
{
QApplication::setOverrideCursor(Qt::WaitCursor);
ui->confirm->setDefault(false);
ui->confirm->setAutoDefault(false);

QVariantMap userData {
{QStringLiteral("type"), type},
Expand Down Expand Up @@ -359,10 +337,8 @@ void AddRecipients::showResult(const QList<QSslCertificate> &result, int resultC
c.type() != SslCertificate::MobileIDType)
{
isEmpty = false;
AddressItem *item = addRecipientToLeftPane(k);
if(userData.value(QStringLiteral("select"), false).toBool() &&
(userData.value(QStringLiteral("type")).isNull() || HistoryCertData::toType(SslCertificate(k)) == userData[QStringLiteral("type")]))
addRecipientToRightPane(item, true);
addRecipient(k, userData.value(QStringLiteral("select"), false).toBool() &&
(userData.value(QStringLiteral("type")).isNull() || HistoryCertData::toType(SslCertificate(k)) == userData[QStringLiteral("type")]));
}
}
if(resultCount >= 50)
Expand Down
6 changes: 2 additions & 4 deletions client/dialogs/AddRecipients.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,12 @@ class AddRecipients final : public QDialog

private:
void addAllRecipientToRightPane();
void addRecipientFromCard();
void addRecipientFromFile();
void addRecipientFromHistory();
AddressItem * addRecipientToLeftPane(const QSslCertificate& cert);
void addRecipient(const QSslCertificate& cert, bool select = true);
bool addRecipientToRightPane(const CKey &key, bool update = true);
void addRecipientToRightPane(AddressItem *leftItem, bool update = true);
bool addRecipientToRightPane(AddressItem *leftItem, bool update = true);
void addSelectedCerts(const QList<HistoryCertData>& selectedCertData);
void enableRecipientFromCard();
void removeRecipientFromRightPane(Item *toRemove);

void search(const QString &term, bool select = false, const QString &type = {});
Expand Down
Loading

0 comments on commit 6ece2ed

Please sign in to comment.