1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
/* vi: set sw=4 ts=4:
*
* Copyright (C) 2023 Christian Hohnstaedt.
*
* All rights reserved.
*/
#include <QLabel>
#include <QTextEdit>
#include <QLineEdit>
#include <QDialogButtonBox>
#include <QDialog>
#include "MainWindow.h"
#include "XcaDetail.h"
#include "Help.h"
#include "ImportMulti.h"
#include "lib/pki_base.h"
#include "lib/database_model.h"
XcaDetail::XcaDetail(QWidget *w)
: QDialog(w && w->isVisible() ? w : nullptr)
{
importmulti = dynamic_cast<ImportMulti *>(w);
setWindowTitle(XCA_TITLE);
Database.connectToDbChangeEvt(this, SLOT(itemChanged(pki_base*)));
}
void XcaDetail::init(const char *helpctx, const char *img)
{
mainwin->helpdlg->register_ctxhelp_button(this, helpctx);
QLabel *image = findChild<QLabel*>("image");
if (image)
image->setPixmap(QPixmap(img));
}
void XcaDetail::itemChanged(pki_base *)
{
}
void XcaDetail::connect_pki(pki_base *p)
{
QDialogButtonBox *buttonBox = findChild<QDialogButtonBox*>("buttonBox");
pki = p;
if (buttonBox && pki && pki->getSqlItemId() == QVariant()) {
importbut = buttonBox->addButton(tr("Import"), QDialogButtonBox::ApplyRole);
connect(importbut, SIGNAL(clicked(bool)), this, SLOT(import()));
}
QPushButton *but = buttonBox->button(QDialogButtonBox::Ok);
if (but)
connect(but, SIGNAL(clicked(bool)), this, SLOT(accept()));
}
void XcaDetail::updateNameComment()
{
if (!pki)
return;
QLineEdit *description = findChild<QLineEdit*>("description");
if (description)
pki->setIntName(description->text());
QTextEdit *comment = findChild<QTextEdit*>("comment");
if (comment)
pki->setComment(comment->toPlainText());
}
void XcaDetail::import()
{
updateNameComment();
qDebug() << "ImportMulti" << importmulti;
if (pki)
pki = importmulti ? importmulti->import(pki) : Database.insert(pki);
if (pki && !Settings["suppress_messages"])
XCA_INFO(pki->getMsg(pki_base::msg_import).arg(pki->getIntName()));
QDialogButtonBox *buttonBox = findChild<QDialogButtonBox*>("buttonBox");
if (buttonBox && !pki && importbut) {
buttonBox->removeButton(importbut);
importbut = nullptr;
QLineEdit *description = findChild<QLineEdit*>("description");
if (description)
description->setReadOnly(true);
QTextEdit *comment = findChild<QTextEdit*>("comment");
if (comment)
comment->setReadOnly(true);
}
}
void XcaDetail::accept()
{
db_base *db = Database.modelForPki(pki);
updateNameComment();
if (pki && pki->getSqlItemId().isValid() && db)
db->updateItem(pki);
QDialog::accept();
}
|