appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcertificatedetails.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcertificatedetails.cpp Thu May 27 12:58:35 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Certificate details dialog in SifUi
+*
+*/
+
+#include "sifuidialogcertificatedetails.h" // SifUiCertificateDetails
+#include "sifuidialogcertificateinfo.h" // SifUiDialogCertificateInfo
+#include <hblabel.h> // HbLabel
+#include <hbtextedit.h> // HbTextEdit
+#include <hblistwidget.h> // HbListWidget
+#include <hblistwidgetitem.h> // HbListWidgetItem
+#include <hbaction.h> // HbAction
+#include <QTextStream>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::SifUiDialogCertificateDetails()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogCertificateDetails::SifUiDialogCertificateDetails(
+ const QList<SifUiDialogCertificateInfo*> &certificates) : HbDialog(),
+ mCertificates(certificates)
+{
+ setDismissPolicy(HbPopup::NoDismiss);
+ setTimeout(HbPopup::NoTimeout);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::showDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogCertificateDetails::showDetails()
+{
+ int count = mCertificates.count();
+ Q_ASSERT(count != 0);
+ if (count == 1) {
+ showCertificate(0);
+ } else {
+ showList();
+ }
+ open();
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::certificateDetails()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogCertificateDetails::certificateDetails(
+ const SifUiDialogCertificateInfo& certificate)
+{
+ // TODO: change to properly localizable string
+ QString details;
+ QTextStream stream(&details);
+ stream << tr("Issuer:\n")
+ << certificate.issuerName()
+ << endl << endl;
+ stream << tr("Subject:\n")
+ << certificate.subjectName()
+ << endl << endl;
+ stream << tr("Valid from:\n")
+ << certificate.validFrom().toString()
+ << endl << endl;
+ stream << tr("Valid until:\n")
+ << certificate.validTo().toString()
+ << endl << endl;
+ stream << tr("Serial number:\n")
+ << certificate.formattedSerialNumber()
+ << endl << endl;
+ stream << tr("Fingerprint (SHA1):\n")
+ << certificate.formattedFingerprint()
+ << endl;
+ return details;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::showList()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogCertificateDetails::showList()
+{
+ int count = mCertificates.count();
+ Q_ASSERT(count > 1);
+
+ // TODO: localisation
+ HbLabel *title = new HbLabel(tr("Select certificate"));
+ setHeadingWidget(title);
+
+ HbListWidget *content = new HbListWidget;
+ for (int index = 0; index < count; ++index ) {
+ HbListWidgetItem *item = new HbListWidgetItem();
+ item->setData(QVariant(mCertificates.at(index)->subjectName()));
+ content->addItem(item);
+ }
+ setContentWidget(content);
+ connect(content, SIGNAL(activated(HbListWidgetItem*)),
+ this, SLOT(certificateSelected()));
+
+ setPrimaryAction(new HbAction(hbTrId("txt_common_button_close")));
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::certificateSelected()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogCertificateDetails::certificateSelected()
+{
+ QGraphicsWidget *content = contentWidget();
+ if (content->type() == Hb::ItemType_ListView) {
+ HbListWidget *listWidget = reinterpret_cast<HbListWidget*>(content);
+ int index = listWidget->currentRow();
+ if (index >= 0 && index < mCertificates.count()) {
+ showCertificate(index);
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogCertificateDetails::showCertificate()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogCertificateDetails::showCertificate(int index)
+{
+ // TODO: localisation
+ HbLabel *title = new HbLabel(tr("Certificate details"));
+ setHeadingWidget(title);
+
+ HbTextEdit *content = new HbTextEdit;
+ Q_ASSERT(index >= 0 && index < mCertificates.count());
+ QString details = certificateDetails(*mCertificates[index]);
+ content->setPlainText(details);
+ content->setReadOnly(true);
+ setContentWidget(content);
+
+ setPrimaryAction(new HbAction(hbTrId("txt_common_button_close")));
+}