appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcertificatedetails.cpp
changeset 37 6e7b00453237
child 42 d17dc5398051
--- /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")));
+}